Выровнять выведенное изображение внутри текстового вида в центр
У меня есть текстовое представление, которое содержит изображение и некоторый текст.
программно я добавил рисованное изображение в левую сторону текстового представления
txtIDFav.setCompoundDrawablesWithIntrinsicBounds(R.drawable.fav_enabled, 0, 0, 0);
Я выровнял текстовое представление к центру с помощью
txtIDFav.setGravity(Gravity.CENTER);
Теперь текст в текстовом виде выровнен по центру. но изображение находится на левой стороне.
например: [изображение] _____________________ mytext
использовал _, чтобы дать пробел, поскольку его не разрешено.
Я хочу выровнять изображение в центре вместе с текстом.
например: _____________________ [изображение] mytext
Пожалуйста, совет.
Спасибо и оцените.
Ответы
Ответ 1
Попробуйте это, он должен работать:
Spannable span = new SpannableString(" " + txtIDFav.getText()); // or set your text manually
Drawable drawable;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
drawable = getResources().getDrawable(R.drawable.fav_enabled, getContext().getTheme());
}
else
{
drawable = getResources().getDrawable(R.drawable.fav_enabled);
}
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
ImageSpan imageSpan = new ImageSpan(drawable);
span.setSpan(imageSpan, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
txtIDFav.setText(span);
Ответ 2
Я также столкнулся с той же проблемой, но я не хочу использовать Button и TextView по отдельности, а также я не хочу делать это с помощью кода Java. Итак, я нашел это. Я знаю, что даю решение поздно. Но это помогает тебе
<FrameLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_margin="20dp"
android:background="@drawable/next_btn_bg_rounded_corners">
<TextView
android:id="@+id/btn_restore_purchases"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@null"
android:drawableLeft="@mipmap/restore"
android:drawablePadding="10dp"
android:drawableStart="@mipmap/restore"
android:text="@string/restore_purchases"
android:textAllCaps="false"
android:textColor="@color/white" />
</FrameLayout>
![icon with text in center]()
Ответ 3
Вставьте выделение в свой текст с помощью SpannableString.
SpannableStringBuilder textspan = new SpannableStringBuilder(" " + yourText);
Drawable icon = getResources().getDrawable(R.drawable.fav_enabled);
// jump drawable to the text view state (if it is a state drawable)
icon.setState(textView.getBackground().getState()); // match the background state
textspan.setSpan(new ImageSpan(icon, ImageSpan.ALIGN_BOTTOM), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(textspan);
Ответ 4
Я предполагаю, что это произошло, потому что ширина textView установлена в match_parent
или fill_parent
. Попробуйте установить ширину textView в wrap_content
и центрировать весь textView, а не только текст.
Планировка:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textViewTest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Test"
android:textSize="28sp" />
</FrameLayout>
Деятельность:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textViewTest=(TextView)findViewById(R.id.textViewTest);
textViewTest.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_launcher, 0, 0, 0);
}
}
Результат
Ответ 5
невозможно установить изображение в фоновом режиме текстового представления, вместо этого вы можете установить свой drawable on textview следующим образом
Android: drawableRight = "@вытяжке/ic_launcher"
"или"
Android: drawableleft = "@вытяжке/ic_launcher"
"или"
Android: drawableBottom = "@вытяжке/ic_launcher"
только для решения вашей проблемы вы можете использовать texview внутри framelayout таким образом
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:layout_width="match_parent"
android:background="@drawable/ic_launcher"
android:layout_gravity="center"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</FrameLayout>
Ответ 6
Вам нужно написать такой код: -
txtIDFav.setGravity(Gravity.CENTER | Gravity.RIGHT);