2

私はその選択をリストに使用します

<?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:background="@drawable/arrow"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|left"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tvDescr"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical" >
        </TextView>
    </LinearLayout>

    <ImageView
        android:id="@+id/ivImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:maxHeight="20dp"
        android:minHeight="20dp" >
    </ImageView>

</LinearLayout>

およびセレクターarrow.xml

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

    <item><shape>
            <gradient android:angle="90.0" android:endColor="#6495ED" android:startColor="#0000FF" android:type="linear" />

            <corners android:radius="5.0dp" />
        </shape></item>
    <item android:state_focused="true"><shape>
            <gradient android:angle="90.0" android:endColor="#BA55D3" android:startColor="#800080" android:type="linear" />

            <corners android:radius="5.0dp" />
        </shape></item>
    <item android:state_pressed="true"><shape>
            <gradient android:angle="90.0" android:endColor="#BA55D3" android:startColor="#800080" android:type="linear" />

            <corners android:radius="5.0dp" />
        </shape></item>

</selector>

結果は

ここに画像の説明を入力してください

-動作しませんが、削除すると(以下のソース)動作します

<item><shape>
                <gradient android:angle="90.0" android:endColor="#6495ED" android:startColor="#0000FF" android:type="linear" />

                <corners android:radius="5.0dp" />
            </shape></item>

ここに画像の説明を入力してください

ただし、「リストボタン」をクリックした後はスタイルを変更する必要があるため、目的の結果は得られません。ただし、これは発生しません。

私が作りたい:

1)写真1のように押す前のスタイル

2)ボタンを押した後、2枚の写真のようにボタンのスタイルを変更する必要があります

3)別のボタンをクリックするまでそのままにします ここに画像の説明を入力してください

4

2 に答える 2

1

LinearLayoutではなくリストビューでセレクターを適用してください。

于 2012-09-06T11:32:35.497 に答える
1

セレクターは「state-list-drawable」です。つまり、<items>適用されるビューの状態に応じて「selects」になります。

StateListDrawableは、XMLで定義された描画可能なオブジェクトであり、オブジェクトの状態に応じて、いくつかの異なる画像を使用して同じグラフィックを表します。たとえば、ボタンウィジェットは、いくつかの異なる状態(押された、フォーカスされた、またはニーザー)のいずれかに存在でき、描画可能な状態リストを使用して、状態ごとに異なる背景画像を提供できます。

ドキュメントのように、構文は次のとおりです。

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>

で設定できる属性に注意してください<item>

これが典型的なセレクターの例です。

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
>
    <item
        android:state_focused="true" 
        android:state_pressed="false" 
android:drawable="@drawable/list_element_focused"   />
    <item
        android:state_focused="true" 
        android:state_pressed="true"
android:drawable="@drawable/list_element_focused_pressed"   />  
    <item
        android:state_focused="false" 
        android:state_pressed="true"
android:drawable="@drawable/list_element_pressed"   />  
    <item
android:drawable="@drawable/list_element_unfocused" />  
</selector>
于 2012-09-06T11:41:22.433 に答える