2017-01-13 22 views
1

私はWidget.AppCompat.Button.Coloredスタイルのデフォルトの動作と闘おうとしています。デフォルトでは、ボタンは半透明です。私はそれを不透明にしたい。私は無効にした場合、ボタンは透明になりませんstyle="@style/Widget.AppCompat.Button.Colored"一部を削除した場合Widget.AppCompat.Button.Coloredボタンが無効になっていると透明になります

<Button 
    android:id="@+id/search" 
    style="@style/Widget.AppCompat.Button.Colored" 
    android:theme="@style/AccentButton" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Search"/> 

のstyles.xml

<style name="AccentButton" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="colorButtonNormal">#f00</item> 
</style> 

:レイアウトの

ボタン: はここに私のコードです。

私はAppcompat/Androidソースコードを調べようとしました。いいえ運はない。私はそれが透明に設定されている部分を見つけることができません。目標は、主にAppCompatコードを使用する素晴らしいソリューションを得ることです。カスタムdrawableボタンバックグラウンドを作成できることはわかっています。私はそれを避けたいです。何か案は?

答えて

3

ソリューションを使用することです。このような<item name="android:disabledAlpha">1.0</item>:私はbtn_colored_material.xmlソースコードを発見したいくつかの闘争の後、この答え

に着く方法

<style name="AccentButton" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="colorButtonNormal">#f00</item> 
    <item name="android:disabledAlpha">1.0</item> 
</style> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" 
      android:alpha="?attr/disabledAlpha" 
      android:color="?attr/colorButtonNormal" /> 
    <item android:color="?attr/colorAccent" /> 
</selector> 

属性はdisabledAlphaです。だから、それを使うことだけでした。

私がまだ得られないことの1つは、なぜandroid:プレフィックスで使用する必要があるかということです。私はそれを期待:

  • ?android:attr/somethingは私の推測では、Android soruceコードコードが使用されている場合、それはそれは必要としない独自の属性であるということです<item name='something'>(...)

で設定することが<item name='android:something'>(...)

  • ?attr:somethingを設定します接頭辞。

  • 関連する問題