2

警告: この質問の XML は間違っています。混乱する前に回答を読んでください。


久しぶりに壁に頭ぶつけました。次の投稿は主題に光を当てましたが、私の問題を解決できませんでした: Android ListView State List not show default item background and ListView item background via custom selector

リスト項目を選択すると、適切な 9 パッチの背景が完全に表示されますが、最初に表示されるデフォルトの 9 パッチの背景を取得できません。どういうわけかデフォルトのアイテムの背景を設定する必要があるように思えますが、その方法がわかりません。

リストビュー:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/shopListHeader"
    />
  <ListView
    android:id="@+id/shopList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="0px"
    android:divider="#FFFFFFFF"
    android:listSelector="@drawable/shop_list_selector"
    />
</LinearLayout>

セレクタ:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

    <!-- the list items are enabled and being pressed -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/shop_list_item_pressed" />

    <item
        android:state_selected="true"
        android:textColor="#FFFFFFFF" />
</selector>

バックグラウンド:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

    <item
      android:state_selected="true"
      android:drawable="@android:color/transparent" />

    <item
        android:drawable="@drawable/shop_list_item" />
</selector>

ご覧のとおり、参考文献から例を簡単に説明しました。

また、Background セレクターがどこにも参照されていないことに気付くかもしれません。私はそれをランダムな場所に投げ始めました(アプリが追加をコンパイルした場合、効果がないか、強制的に閉じられます)

また、アイテムが選択されているが押されていないときに、テキストの色が黒と灰色に変わるのを止めようとしました(リストをスクロールすることで実行できます)。私の背景は中央が黒くなるので、選択するとテキストが部分的に見えなくなります。私が知る限り、その追加 (セレクターの最後の項目ノード) は何もしません。

この途方もなく時間のかかる機能を機能させることについて、誰か考えがありますか?

4

2 に答える 2

5

このスレッドを削除するつもりでしたが、削除できないので、これをしてはいけないことの例として使用できないかどうかを確認します:)

まず、ListView XML で:android:listSelector="@drawable/shop_list_selector"
やらないでください!

ここでやろうとしていたのは、リスト項目の背景を設定することでしたが、android:backgroundプロパティは機能しませんでした。項目 XML が欠落していることにお気づきかもしれませんが、それは私の頭から欠落していたためです! (私はこの「問題」に打ちのめされていた無数の時間にわたってそれに触れたことはありません) したがって、行android:background="@drawable/shop_list_selector"はアイテムのプロパティに入り、すべてがグルーヴィーです。(上記の XML は非常に間違っているので、使用しないでください!)

...まあ、それは私の頭の中で見たように、実際の生活では良く見えないことを除いて:(
製図板に戻りましょう!!!

于 2011-05-13T22:07:31.177 に答える
3

「通常の」状態を定義していません。この例を参照してください

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/blue"
          android:state_pressed="true" />
    <item android:color="@color/red"
          android:state_selected="true" />
    <item android:color="@color/white" />
</selector>

ここでは、白が「通常の」状態です。ここでは、それに関するドキュメントを見つけることができます。

これが役立つことを願っています

于 2011-03-24T22:45:27.240 に答える