如何使ellipsize textview和imageview显示正确

时间:2015-08-03 05:09:22

标签: android android-layout optimization

我正在处理布局文件。此布局要求图标应始终在单行TextView之后。如果TextView太长,那么TextView是ellipsize并且应该显示图标。例如:

情况1:[[textview] [icon1] [icon2]]

情况2:[[textview ......] [icon1] [icon2]]。

我在here找到了类似的案例,但它对我不起作用。

我目前的代码是这样的:

 <RelativeLayout
            android:id="@+id/parent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="left">


            <!-- icon show here -->
            <LinearLayout
                android:id="@+id/icons"
                android:paddingLeft="5dp"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:gravity="center_vertical|left">

            </LinearLayout>


            <!--text show here-->
            <TextView
                android:id="@+id/text"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_toLeftOf="@id/icons"
                android:singleLine="true"
                android:ellipsize="end"
                android:gravity="left"/>



        </RelativeLayout>

LinearLayout用于在从服务器获取数据时添加图标。 Android的布局预览就像上面的情况,但是apk运行在这样的设备上:

情况1:[[textview] [icon1] [icon2]]

情况2:[[textview ......] [icon1] [icon2]]。

我真的很困惑。有人对这种情况有一些看法吗?提前谢谢。

我发现Android 4.3之后的代码运行正常(包括4.3,我没有测试4.2),它在Android 4.3下无法运行。我认为不同的Android系统以不同的方式解析这些布局参数。比如某些版本认为父容器布局的参数比子视图更重要。

1 个答案:

答案 0 :(得分:1)

最后,我得到了我的愚蠢情况。但它有效。我会给你代码:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <!--text show here-->
                <TextView
                    android:id="@+id/text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:layout_weight="1" />


                <!-- icons show here -->
                <LinearLayout
                    android:id="@+id/icons"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_gravity="center_vertical"
                    android:orientation="horizontal">

                </LinearLayout>

            </LinearLayout>

            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_gravity="right"/>

        </LinearLayout>