Я пишу виджет приложения, который отображает некоторые числа, каждого с маркировкой перед ним.
Расположение похоже на это:
.-----------------------------.
| Label1 | AAAAAAAAAAA |
| LongerLabelLabel2 | BBBBBBB |
| LongLabel3 | CCCCCCCCCC |
'-----------------------------'
Существует один внешний (вертикальный) LinearLayout, и каждой строкой является горизонтальный LinearLayout с двумя TextViews.
Проблема состоит в том, что числа получают ellipsized, если ширина маркировки и числа слишком широка для виджета. Я хочу, чтобы маркировки получили ellipsized.
Вышеупомянутая ситуация, например, закончился бы как это:
.-----------------------------.
| Label1 | AAAAAAAAAAA |
| LongerLabelLabel2 | BBBB... |
| LongLabel3 | CCCCCCCCCC |
'-----------------------------'
вместо желаемого
.---------------------------.
| Label1 | AAAAAAAAAAA |
| LongerLabelL... | BBBBBBB |
| LongLabel3 | CCCCCCCCCC |
'---------------------------'
Я не могу для своей жизненной фигуры, как решить это. Любая справка ценится.
Мой текущий макет следующий:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="0dip"
android:orientation="vertical"
style="@style/WidgetBackground">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ROW1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="7dip"
android:paddingBottom="0dip"
android:paddingRight="10dip"
android:paddingLeft="10dip"
android:orientation="horizontal">
<TextView android:id="@+id/NAME1" android:singleLine="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" style="@style/Text.account" />
<TextView android:id="@+id/BAL1" android:singleLine="true" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" style="@style/Text.balance" />
</LinearLayout>
... (more similar rows in the outer layout)
</LinearLayout>
Я подозреваю, что ваша проблема отчасти в том, что у вас есть android: layout_width = "wrap_content"
для вашего лейбла. Я бы не ожидал, что он будет иметь многоточие, так как места достаточно, чтобы его показать.
Я бы переключился с LinearLayout
на RelativeLayout
. Определите свой числовой "столбец" как android: layout_alignParentRight = "true"
и android: layout_width = "wrap_content"
. Определите свой ярлык "столбец" как android: layout_alignParentLeft = "true"
, android: layout_toLeftOf = "..."
(где ...
- ваш номер column) и android: ellpsize = "end"
. Это должно дать номеру все необходимое пространство и ограничить метку, заставив ее иметь многоточие.