web-dev-qa-db-ja.com

クリック可能なビューのデフォルトのセレクターの背景

いくつかのクリック可能なビューがあり、リストクリックに存在するデフォルトの利用可能な背景を設定したい(ICSは青色)。背景としてこれを入れてみた:

Android:background="@Android:drawable/list_selector_background"

しかし、それは私がデフォルトで持っているデフォルトの青ではありません(私が使用したものはオレンジです)。 Androidクリックセレクタとしてデフォルトで使用されるドロアブルは何ですか?

ありがとう

49
Matroska

list_selector_holo_darkまたは同等のホロライトバージョン。これらはHoneycomb以上のデフォルトです。 list_selector_backgroundは非ホロバージョンで、Gingerbread以下で使用されます。

[〜#〜] edit [〜#〜]:Ibelieve(ただし確認できません)プラットフォームに依存しないセレクターは ?android:attr/listSelector

20
Alex Curran

これは私のために働く:

Android:background="?android:attr/selectableItemBackground"
158
Bogdan Balan

appcompat-v7を使用している場合は、?attr/selectableItemBackgroundを使用できます。

11
idunnololz

すべての有効な回答を組み合わせる方法があります。

属性を定義します(例:values/attrs.xmlで):

<attr name="clickableItemBackground" format="reference"/>

プラットフォームに依存するテーマセクション(values/styles.xmlまたはvalues/themes.xmlなど)でこれを宣言します:

<style name="Theme.Platform" parent="@Android:style/Theme.Whatever">
        <item name="clickableItemBackground">@Android:drawable/list_selector_background</item>
</style>

Api-11 +のプラットフォーム依存テーマセクション(values-v11/styles.xmlまたはvalues-v11/themes.xmlなど)で次を宣言します。

<style name="Theme.Platform" parent="@Android:style/Theme.Holo.Whatever">
        <item name="clickableItemBackground">?android:attr/selectableItemBackground</item>
</style>

次に、必要に応じて?attr/clickableItemBackgroundを使用します。

8
flx

これは、API 11以降で正常に機能します。ただし、前述のように、以前のバージョンでは機能しません。

Android:background="?android:attr/selectableItemBackground"

すべてのバージョン Androidの実行で実行するためのソリューションを次に示します。

  1. Valuesフォルダー内にあるcolors.xml内に適切な色を追加します。次のように表示されます。

    <color name="white">#ffffff</color>
    <color name="blue">#7ecce8</color>
    
  2. Xmlセレクタファイルを作成します。ここでは、button_selection.xmlという名前を付けました

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true" Android:drawable="@color/blue"/>         <!--pressed -->
    <item Android:state_focused="true" Android:drawable="@color/blue"/> <!-- focused -->
    <item Android:drawable="@color/white"/> <!-- default -->
    </selector> 
    
  3. ビューまたはボタンに移動し、新しく作成したbutton_selection.xmlを背景として設定します。

    Android:background="@drawable/button_selection"
    
5

Flxの答えに似たソリューションですが、追加の属性定義はありません。

ホロ以前のデバイスに使用されるプラットフォームに依存しないスタイル(res\values\styles.xml):

<style name="SelectableItem">
    <item name="Android:background">@Android:drawable/list_selector_background</item>
</style>

Holoデバイスのスタイル(APIレベル14以降)(res\values-v14\styles.xml内):

<style name="SelectableItem">
    <item name="Android:background">?android:attr/selectableItemBackground</item>
</style>

必要なビューにスタイルを適用します。例:LinearLayout

<LinearLayout
    style="@style/SelectableItem"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">
...
</LinearLayout>
5

あるいは、

Android:background="?android:attr/listChoiceBackgroundIndicator

アイテムがクリックされている間、青(または現在のデフォルト)を強調表示するだけの場合。

4
Colin

Backgroundを設定すると、後で背景色または描画可能を選択できなくなります。したがって、私のスタイルは、このスタイルをstyles.xmlに追加することです。

<style name="TouchableView">
    <item name="Android:foreground">?android:attr/selectableItemBackground</item>
</style>

そして、すべてのビューで追加するだけです:

            Android:theme="@style/TouchableView"

[〜#〜] any [〜#〜] VIEW!

    <TextView
        Android:id="@+id/my_orders"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginRight="0dp"
        Android:theme="@style/TouchableView"
        Android:background="@color/white"
        Android:gravity="left"
        Android:padding="10dp"
        Android:text="@string/my_orders"
        Android:textColor="@color/gray"
        Android:textSize="14sp" />

忘れないでくださいonClickListenerを追加して結果を表示します。

1
Morteza Rastgoo