web-dev-qa-db-ja.com

Android LinearLayout Selectorの背景色

こんにちは私は線形レイアウトをボタンのように機能させようとしています。つまり、状態が変化したときに背景色を変更しようとしているのです。セレクターを使って解決しましたが、うまくいきませんでした。

私は解決策を探しましたが、彼らが言うすべてはクリック可能な属性を追加することでした。私はすでにそれをやった。

私のLinearLayoutには、それぞれ9つのTextViewを含む2つのLinearLayoutが含まれています。それらは私のLinearLayoutを完全に満たします。

私が思ったのは、その子がクリックイベントを吸収していて、LinearLayoutがその状態を押された状態に変更しないことです。

そのため、LinearLayoutのすべての子でclickableおよびfocusalbe属性をfalseに設定します。

ただし、それは同じです。

これが私のコードです。

これはセレクターjbbtn.xmlです。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item Android:state_enabled="true" Android:state_pressed="true"
         Android:drawable="@drawable/jbbtn_pressed"/>
    <item Android:state_enabled="true" 
         Android:drawable="@drawable/jbstyle_transparent"/>
    <item Android:state_enabled="false" Android:drawable="@drawable/jbbtn_disabled"/>
</selector>

そして、これが私のLinearLayoutです。

<LinearLayout
    Android:id="@+id/llCurrents"
    Android:background="@drawable/jbbtn"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:layout_alignParentBottom="true"
    Android:layout_alignParentLeft="true"
    Android:layout_alignTop="@+id/llTimer"
    Android:layout_below="@id/btnMenu"
    Android:layout_marginRight="3sp"
    Android:clickable="true"
    Android:focusable="true"
    Android:orientation="horizontal"
    Android:padding="3sp" >

    ~~~~~~

</LinearLayout>
14
Peter

線形レイアウトをボタンとして使用していますが、クリック可能として割り当てられているものはなく、問題なく動作しているようです。標準ボタンのスタイルを設定しました。他のボタンと同様に、そのスタイルを線形レイアウトに割り当てます。

ボタンとしてのlinearlayout:

<LinearLayout
    style="@style/btn_stand"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:onClick="onClickLLButton"
    Android:orientation="vertical" >

    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:gravity="center"
        Android:text="Button Label" />

    <TextView
        Android:id="@+id/tvLLButton"
        Android:layout_height="0px"
        Android:layout_weight="1"
        Android:gravity="center"
        Android:text="Button Info" />
</LinearLayout>

ボタンのスタイル定義:

<style name="btn_stand" parent="AppBaseTheme">
    <item name="Android:background">@drawable/btn_stand_sel</item>
    <item name="Android:textColor">@drawable/btn_stand_text_color</item>
    <item name="Android:minHeight">48dp</item>
    <item name="Android:paddingLeft">5dp</item>
    <item name="Android:paddingRight">5dp</item>
</style>

私の@ drawable/btn_stan_selファイル:

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

    <!-- disabled state -->
    <item Android:drawable="@drawable/btn_stand_disabled" Android:state_enabled="false"/>

    <!-- enabled and pressed state -->
    <item Android:drawable="@drawable/btn_stand_pressed" Android:state_enabled="true" Android:state_pressed="true"/>

    <!-- enabled and focused state -->
    <item Android:drawable="@drawable/btn_stand_focused" Android:state_enabled="true" Android:state_focused="true"/>

    <!-- enabled state -->
    <item Android:drawable="@drawable/btn_stand_enabled" Android:state_enabled="true"/>

</selector>

私のドローアブルファイルは、州ごとに色が異なるだけで、州ごとに繰り返されます。

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

    <stroke
        Android:width="1dp"
        Android:color="@color/stroke" />

    <solid Android:color="@color/blue" />

    <corners Android:radius="6dp" />

</shape>
15
minelight

あなたは付け加えられます:

Android:clickable="true"

LinearLayoutに。

8
user6228151

この質問には答えがありますが、私はこれを明確にして私の観察を与えるためにこれを書いています。

@ minelight による回答は、LinearLayoutやTextViewなど、クリックできないビューでは機能しません。 statePressed状態は、クリック可能なビューでのみ使用できます。

2番目の答えは、最初の答えを実際に完了します。

0
mayank1513