0

それぞれが水平方向ListViewに 6 つのウィジェットで構成されるカスタム行レイアウトを使用しています。 各行は、ランドスケープ モードであっても、ほとんどの携帯電話の画面よりも幅が広くなっています。 ただし、一部のハイエンド タブレットでは、行の幅が横画面の幅よりも短くなります。 TextView

画面が行よりも広いことを検出しListView、最後のTextViewウィジェットの幅を画面の幅に合わせて変更するにはどうすればよいですか?

通常のデバイスでは幅が広すぎるため、デフォルトで行を広くしたくありません。アダプターメソッドで 幅を確認しようとしましたが、すべての幅が 0 であり、レイアウトのインフレーション後のイベントでもあります。
ListViewgetView()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すべてを内にカプセル化し、の配置属性をRelativeLayout使用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>

2 番目TextViewは、最初のオブジェクトの右側に配置され、親の右端に配置されるように設定されています。TextViewしたがって、 の最初と最後の間のスペースを埋めますRelativeLayout

于 2013-03-01T15:32:50.770 に答える