0

我有一个ListView使用自定义行布局,每个布局由TextView水平的 6 个小部件组成。
即使在横向模式下,每一行都比大多数手机屏幕宽。
但在一些高端平板电脑上,行宽比横屏宽度要短。

如何检测屏幕比该ListView行更宽,然后更改最后一个TextView小部件的宽度以匹配屏幕宽度?

我不想让行默认变宽,因为它们对于普通设备来说太宽了。
我试图检查ListView适配器getView()方法中的宽度,但是所有宽度都是 0,甚至是convertView宽度,布局膨胀后的事件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView 
        android:id="@+id/log_time"
        android:layout_width="135dp"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:textSize="14sp" >
    </TextView>

    <TextView 
        android:id="@+id/log_level"
        android:layout_width="20dp"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:textSize="14sp" >
    </TextView>

    <TextView 
        android:id="@+id/log_pid"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:textSize="14sp" >
    </TextView>

    <TextView 
        android:id="@+id/log_tid"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:textSize="14sp" >
    </TextView>

    <TextView 
        android:id="@+id/log_tag"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:maxLines="1"
        android:singleLine="true"
        android:ellipsize="end"
        android:textSize="14sp" >
    </TextView>

    <TextView 
        android:id="@+id/log_message"
        android:layout_width="600dp"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:maxLines="1"
        android:singleLine="true"
        android:ellipsize="end"
        android:textSize="14sp" >
    </TextView>

</LinearLayout>
4

1 回答 1

0

您可以将所有内容封装TextViews在 aRelativeLayout中,然后使用RelativeLayout的对齐属性使最后一个元素填充剩余的屏幕空间。

例如:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@+id/textView1" />

</RelativeLayout>

第二个TextView设置为与第一个的右侧对齐,并与其父级的右边缘对齐。因此,它将填充TextView.RelativeLayout

于 2013-03-01T15:32:50.770 回答