web-dev-qa-db-ja.com

カスタムListViewを使用せずにListActivityのsetDividerで仕切りを変更しますか?

ListActivityを使用し、カスタムListViewを作成していない場合、定義したDrawableを使用してカスタマイズされた仕切りを機能させることができないようです。 VMが独自のListViewを作成し、ListActivityを使用すると、デフォルトの仕切りが提供されたテーマを使用するように見えます。 1つ提供してみてください。ListViewに仕切りはまったく表示されません。

XMLを使用してカスタムListViewを作成し、そのListViewでAndroid:dividerを定義できることを知っています。これにより、カスタムディバイダーDrawableが認識されます。しかし、自分の仕切りを機能させる方法がわかれば、ListActivityに独自のListViewを作成させることをお勧めします。

これが私が今使っているコードです:

public class Categories extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final String[] OPTIONS = {
            "Hello",
            "Goodbye",
            "Good Morning",
            "Greetings",
            "Toodaloo"
        };

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, Android.R.layout.simple_list_item_1, OPTIONS);
        setListAdapter(adapter);

        ListView lv = getListView();
        PaintDrawable sage = new PaintDrawable(R.drawable.sage);
        lv.setDivider(sage);
        lv.setDividerHeight(1);
    }
}
14
hotshot309

私はそれを考え出した。この問題は、ListActivityがListViewを生成することとは何の関係もありませんでした。 Javaコードで仕切りを定義する方法にありました。

XMLで色を定義する場合、ListActivityから自動的に拡張されるListViewで仕切り(ListView行間の境界)を定義する方法は2つあります。

方法1:

Res/values /colors.xmlに次のように入力します。

<resources>
 <color name="sage">#cceebb</color>
</resources>

ListActivity拡張クラスで、次のようにします。

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.color.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);

方法2:

Res/values/colors.xml内:

<resources>
 <drawable name="sage">#cceebb</drawable>
</resources>

そして、ListActivityを拡張するクラスでは:

ListView lv = getListView();
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(R.drawable.sage));
lv.setDivider(sage);
lv.setDividerHeight(1);
37
hotshot309

プログラムでリストビューに仕切りを設定するには

これらのコードは。Javaクラスに組み込まれます

   ListView lv = (ListView) findViewById(R.id.lv);
   lv.setDivider(getResources().getDrawable(R.drawable.drawable_divider));
   lv.setDividerHeight(1);

Drawableの作成:{res> drawable> drawable_divider.xml}

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"

    Android:shape="rectangle">

    <solid Android:color="#ececec"></solid>

</shape>
3
Dhruv Raval

このコードを試してください:

searchText.setBackgroundColor(getResources().getColor(R.color.wordColorBlack));
ListView lv = getListView();
lv.setDivider(getResources().getDrawable(R.drawable.divider2));
lv.setDividerHeight(2);
3
user3243679