Android AppWidget布局与ellipsize有关

时间:2010-07-29 07:19:01

标签: android layout android-appwidget

我正在编写一个app-widget,显示一些数字,每个数字前面都有标签。

布局如下:

.-----------------------------.
| Label1       |  AAAAAAAAAAA |
| LongerLabelLabel2 | BBBBBBB |
| LongLabel3    | CCCCCCCCCC  |
'-----------------------------'

有一个外部(垂直)LinearLayout,每行是一个带有两个TextView的水平LinearLayout。

问题是,如果标签的宽度和数字对于窗口小部件来说太宽,则数字会被椭圆化。我希望标签能够进行椭圆化。

例如,上述情况最终会像这样:

.-----------------------------.
| 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>

1 个答案:

答案 0 :(得分:2)

我怀疑你的问题部分是因为你的标签有android:layout_width="wrap_content"。我不希望它完全消失,因为有足够的空间来展示它。

我会从LinearLayout切换到RelativeLayout。将您的号码“列”定义为android:layout_alignParentRight="true"android:layout_width="wrap_content"。将您的标签“列”定义为android:layout_alignParentLeft="true"android:layout_toLeftOf="..."(其中...是您的数字列)和android:ellpsize="end"。这应该为数字提供所需的所有空间并限制标签,迫使它进行椭圆化。