0

複数の子を持つ LinearLayout があり、ListView で親レイアウトの残りの下半分を埋める必要があります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:weightSum="1"
    >

    <AutoCompleteTextView
        android:id="@+id/from_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="10dp"
        android:hint="@string/hint_from"
        android:singleLine="true"
        android:imeOptions="actionNext"
        />

    <AutoCompleteTextView
        android:id="@+id/to_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:hint="@string/hint_to"
        android:singleLine="true"
        android:imeOptions="actionSearch"
        />

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

        <Button
            android:id="@+id/inverse_btn"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".4"
            android:layout_margin="10dp"
            android:text="@string/inverse"
            android:onClick="onClick"
            />

        <Button
            android:id="@+id/search_btn"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".6"
            android:layout_margin="10dp"
            android:text="@string/search"
            android:onClick="onClick"
            />


    </LinearLayout>


    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="10dp"
        android:background="@color/holo_blue_dark"
        />

    <ListView
        android:id="@+id/favorites_lv"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight=".5"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp"
        android:layout_gravity="bottom"
        android:background="#700"
        />

</LinearLayout>

しかし、私はこの結果を得ています:

ここに画像の説明を入力

また、ご覧のとおり、ListView アイテムの高さに問題があります。アイテムのレイアウト:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:padding="5dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_menu_mylocation"
        android:contentDescription="@string/favorites_icon_cd"
        />


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:orientation="vertical"
        android:gravity="left|center_vertical"
        >

        <TextView
            android:id="@+id/from_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            />

        <TextView
            android:id="@+id/to_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            />

    </LinearLayout>

</LinearLayout>

これらの問題を解決するには?

4

1 に答える 1

3

複数の子を持つ LinearLayout があり、ListView で親レイアウトの残りの下半分を埋める必要があります。

ListView の高さを単純に変更して、match_parent使用しないで試すことができlayout_weightます。

<ListView
    android:id="@+id/favorites_lv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    ... />

また、ご覧のとおり、ListView アイテムの高さに問題があります。

レイアウトを使用するには、ネストされた LinearLayout の高さを次のように変更しますwrap_content

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:orientation="vertical"
    android:gravity="left|center_vertical"
    >

android:layout_gravity="center_vertical"(画像を中央に配置する場合は、ImageViewに次を追加できます。)

ただし、2 つの LinearLayout ではなく 1 つの RelativeLayout を使用すると、Android での描画が高速になります。これを試して:

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

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginRight="20dp"
        android:src="@android:drawable/ic_menu_mylocation"
        android:contentDescription="@string/favorites_icon_cd"
        />

    <TextView
        android:id="@+id/from_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/image"
        android:ellipsize="end"
        />

    <TextView
        android:id="@+id/to_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/from_tv"
        android:layout_toRightOf="@id/image"
        android:ellipsize="end"
        />

</RelativeLayout>
于 2012-12-31T17:54:25.190 に答える