その場合、あなたが望むものをそれほど単純に達成することはできません。
ステップ 1: 仕切りを透明に設定し、高さを少し大きくします。
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="@android:color/transparent"
android:dividerHeight="8dp"/>
ステップ 2: 「小さな線」効果を実現するために、リスト ビュー アイテムの背景としてカスタム ドローアブルを追加できます。たとえば、リスト ビュー アイテムが「list_item.xml」として定義されているとします。
<?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="match_parent"
<-- Add a Custom background to the parent container of the listview items -->
android:background="@drawable/list_item_selector"
android:orientation="vertical" >
<-- Rest of the item layout -->
</LinearLayout>
もちろん、そのアイテムは好きなものでかまいません。私のものは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/bg_gray" />
<solid android:color="@android:color/white" />
</shape>
</item>
<item android:bottom="1dp">
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFDDDDDD" />
<solid android:color="#00000000" />
</shape>
</item>
</layer-list>
しかし、それでは「ホロセレクター」効果が無効になり、リストビューのアイテムをクリックまたはハイライトすると、その上にホロブルーの色が描画されます。レイヤー リスト ドローアブルでは、'list_item_selector' という名前のセレクターを使用しました。
押されていないときはレイヤ リスト ドローアブルを使用し、押されているときはホロブルーの色を使用するセレクタを次に示します。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false"
android:drawable="@drawable/list_item_bg2"
/>
<item android:state_pressed="true"
android:drawable="@color/holo_blue"
/>
</selector>
コメントの編集
もちろん、リスト ビュー アイテムの高さを定義することもできますが、変更されない定義済みの高さではなく、最小の高さを設定することをお勧めします。
これが私のリスト項目のレイアウトだとしましょう:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/grid_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/grid_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:layout_toRightOf="@+id/grid_image"
android:minHeight="48dp"
android:padding="8dp"
android:textIsSelectable="false" />
</RelativeLayout>
必要なのは、
ステップ 1: 必要に応じて、values/ フォルダーに含まれる dimens.xml ファイルで、最小の高さまたは最大の高さを定義します。なんで?高さはレイアウトに基づいて確実に変化する必要があり、デバイス密度ごとに異なる dimens.xml を定義できるためです。
dimens.xml で、次のように言います。
<resources>
<!-- List Item Max and Min Height -->
<dimen name="list_item_min_height">48dp</dimen>
<dimen name="list_item_max_height">96dp</dimen>
<dimen name="list_item_set_height">64dp</dimen>
</resources>
そして、LinearLayout
リスト項目のレイアウトの親にどちらの値でも使用します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/list_item_min_height" >
そのトピックはこれで終わりです。テキストを中央に配置すると、さらに簡単になります。
注:これは、高さを wrap_content に設定していない場合にのみ機能します。それ以外の場合は無関係です。
android:gravity="center_vertical"
それが役立つことを願っています。