2015-05-19 3 views
0

У меня есть TextView, который выровнен по правому краю в элементе списка. Его фон является привлекательным, что является просто овальным. Этот текст служит значком, и он должен быть кругом (равной ширине и высоте).Текст центра с динамическим размером TextView

достичь этого, выполнив следующий код:

 textView.setText(badgeCount); 
     textView.measure(0, 0); 
     ViewGroup.LayoutParams params = textView.getLayoutParams(); 
     int size = Math.max(textView.getMeasuredWidth(), textView.getMeasuredHeight()); 
     params.width = size; 
     params.height = size; 
     badgesCountTextView.setLayoutParams(params); 

Это работает только текст выравнивается по левому краю. Мой xml выглядит примерно так:

<RelativeLayout> 
... 
<TextView 
     android:id="@+id/badge_count_text_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp" 
     android:paddingBottom="5dp" 
     android:paddingTop="5dp" 
     android:textSize="15sp" 
     android:textColor="@color/white" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/black_circle" 
     tools:text="45" 
     android:gravity="center"/> 
</RelativeLayout> 

Как я могу разместить текст в моем представлении? Я не могу установить фиксированную ширину или высоту, потому что это необходимо установить динамически в зависимости от размера текста. Может кто-то указать мне верное направление?

+1

Как я понимаю, вы изменяете размер текста, поэтому его фоновое изображение будет растянуто ... Вы используете 9patch? Если это так, убедитесь, что у вас есть правильные позиции содержания, поскольку это будет занимать центральное положение. И вы можете удалить наборы дополнений на xml, если вы скажете гравитационный центр. – yahya

ответ

2

изменить layout_width и layout_height в TextView к fill_parent и установить тяжесть TextView к center вроде этого:

<RelativeLayout> 
... 
<TextView 
    android:id="@+id/badge_count_text_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp" 
    android:textSize="15sp" 
    android:textColor="@color/white" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/black_circle" 
    tools:text="45" 
    android:gravity="center"/> 
</RelativeLayout> 

otherwise, if your TextView is as small as your text, you could not center it easily 
+0

Проблема заключается в том, что значок изменяет размер, чтобы заполнить весь элемент списка. Я хочу, чтобы он был только размером с текст. –

+0

Первый способ - использовать поля и paddings, но это не будет работать для каждого устройства. Второй способ - поместить TextView в LinearLayout или RelativeLayout, у которого будет гравитация = "центр" –

0

Вы установили размер TextView, чтобы обернуть содержание в ширину и высоту. Это означает, что представление крайне мало - просто размер текста. Поэтому он сосредоточен. Вероятно, вам нужно либо установить его ширину на fill_parent, либо установить его layout_leftAlign и rightAlign или toLeftOf и toRightOf таким образом, чтобы он заканчивался большим размером. Но, не зная остальной части вашего макета и того, что вы хотите, чтобы он выглядел так, мы не можем вам помочь.

Смежные вопросы