2017-01-13 2 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 코드를 사용하여 멋진 솔루션을 얻는 것입니다. 사용자 지정 드로어 블 단추 배경을 만들 수 있다는 것을 알고 있습니다. 나는 그것을 피하고 싶다. 어떤 아이디어?

답변

3

이 솔루션은 사용하는 것입니다 :이 같은 <item name="android:disabledAlpha">1.0</item> :

<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> 

내가 btn_colored_material.xml 소스 코드를 발견했습니다 어떤 투쟁 후이 답변

에 도착하는 방법.

<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 속성을 사용합니다. 그래서 그것은 단지 그것을 사용하는 문제였습니다.

내가 아직 얻지 못하는 한 가지 이유는 접두사가 android: 인 이유입니다. 나는 그것을 기대 :

  • ?android:attr/something<item name='android:something'>(...)
  • ?attr:something<item name='something'>(...)

내 생각 엔으로 설정하는 설정하는 안드로이드 soruce 코드 코드를 사용하는 경우는 자신의 속성이 필요하지 않는 점이다 접두사.