Android:如何以编程方式获取布局的宽度

时间:2015-05-20 10:53:48

标签: android layout

嗯,标题并不是真的很详尽,但这就是我如何解决这个问题。 如果有其他解决方案,欢迎他们。

我正在2个模拟器中测试我的应用程序,这是输出:

1024x600 mdpi:

480x800 hdpi:

它是ExpandableListView的一行,左侧包含标题,右侧包含预览。 如果时间太长,预测应该被削减。 问题是,在第一种情况下它太短而在第二种情况下太长。

这是行的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/elv_title_1_selector"
    android:gravity="fill_horizontal|center"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/evl_grp_indicator"
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:contentDescription="indDown"
        android:src="@drawable/indicator_selector" />

    <Button
        android:id="@+id/cbWarning"
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:background="@drawable/warning_selector"
        android:clickable="false"
        android:enabled="false"
        android:focusable="false"
        android:textColor="@color/LogoButtonText"/>

    <TextView
        android:id="@+id/txtGroupName"
        android:layout_width="110dp"
        android:layout_height="wrap_content"
        android:enabled="true"
        android:paddingBottom="15dp"
        android:paddingTop="15dp"
        android:text=""
        android:textColor="@drawable/elv_title_1_selector"
        android:textSize="16sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/txtPreview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="40dp"
        android:gravity="center_vertical"
        android:padding="5dp"
        android:textSize="12sp" />
</LinearLayout>

我已将预览的文本大小设置为12sp,如果长度超过 n 字符,我会以编程方式剪切文本。 我需要的是在第一个案例中将它剪得更大,在第二个案例中剪短。

任何想法如何?

2 个答案:

答案 0 :(得分:1)

要解决此问题,请为android:singleLine="true"添加属性android:ellipsize="end"textview

<TextView
        android:id="@+id/txtPreview"
        android:layout_width="110dp"
        android:layout_height="wrap_content"
        android:enabled="true"
        android:paddingBottom="15dp"
        android:paddingTop="15dp"
        android:text=""
        android:textColor="@drawable/elv_title_1_selector"
        android:singleLine="true"
        android:ellipsize="end"
        android:textSize="16sp"
        android:textStyle="bold" />

答案 1 :(得分:1)

首先在您的第二个android:singleLine="true"

中添加android:ellipsize="end"TextView
<TextView 
...
 android:singleLine="true"
android:ellipsize="end"
...
/>

用于管理不同设备上的文本大小

创建文件夹

values
values-v21
values-sw600

并添加dimes.xml并为不同的分辨率指定textsize