1

ListView の外観をエミュレートするために、垂直 LinearLayout のエントリ間に仕切りを追加しようとしています。(この特定の状況で ListView を使用することはできません。)

これは私がlist_divider.xmlに持っているものです:

<?xml version="1.0" encoding="utf-8"?>
<View
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@color/panel_border"
  android:layout_width="fill_parent"
  android:layout_height="@dimen/border_width"
 />

そして、リストの最初の要素を除くすべての要素の前にこの仕切りを膨らませようとするコードは次のとおりです。

LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < categories.size(); i++ ) {

    if (i > 0)
        items.addView(vi.inflate(R.layout.list_divider, null));    
        // these dividers never appear

    // but these main entries always appear just fine    
    items.addView(ad.getView(i, null, null));
}

メイン リスト アイテムは正しく表示されますが、仕切りは見えません。

区切り線は、プレーン ビューではなく TextView に変更すると表示されます

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@color/panel_border"
  android:layout_width="fill_parent"
  android:layout_height="@dimen/border_width"
  android:text="---"
 />

幅と高さに明示的なピクセル値を設定し、border_width 定義と fill_parent オプションを使用してみました。違いはありません。

従来の View が表示されないようにする特別な点はありますか?

4

1 に答える 1

1

私は最終的に、分割ビューを FrameLayout 内にラップすることで、この問題を回避しました。コンテンツのない単一の空のビューを持つだけではうまくいかないようです。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">

  <View
    android:background="@color/panel_border"
    android:layout_width="fill_parent"
    android:layout_height="@dimen/border_width" />

</FrameLayout>
于 2010-09-08T20:16:39.823 に答える