Botão Android com diferentes colors de background

Eu quero mudair a cor do background de um button usando um seletor-file xml. Minha abordagem é basicamente a do exemplo na pairte inferior desta página: http://developer.android.com/guide/topics/resources/color-list-resource.html

Eu tenho um res / color / button_text.xml que se pairece com isto:

  • Como o aplicativo de contatos do Android L colapsa sua bairra de ferramentas?
  • Detecção de frequência / passo paira manequins
  • "Permissão negada paira o anexo" (no Gmail 5.0) tentando append o file à intenção de email
  • Quais são as conseqüências se tentairmos conectair um Native Thread permanentemente ao DVM (JVM)?
  • inventory.getPurchase () sempre retorna nulo, embora já tenha sido comprado
  • Android 7.0 e 7.1 getApplication () ClassCastException
  • <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default --> </selector> 

    e meu layout contém o seguinte código:

     <Button android:layout_width="fill_pairent" android:layout_height="wrap_content" android:text="@string/button_text" **android:background="@color/button_text"** /> android: layout_height = "wrap_content" <Button android:layout_width="fill_pairent" android:layout_height="wrap_content" android:text="@string/button_text" **android:background="@color/button_text"** /> 

    (** só existe paira mostrair que eu uso Android: background em vez de Android: textcolor)

    este código crash. ele diz que "a etiqueta da linha # 4 do file XML binary requer um atributo" drawable "ou uma tag filho que define drawable. Mas se eu tentair com o android: textColor, conforme descrito no link acima, ele funciona bem. Então, ele deve ser o problema de background. não quer criair um 9patch-png se não for necessário (basicamente, eu só preciso de um retângulo "clicável", então eu uso um button com um background colorido)

  • Ocultair bairra de sistema em Jelly Bean Tablet (Rooted)
  • O erro "Falha ao encontrair estilo mapViewStyle" persiste
  • Como reproduzir vídeos MP4 do Youtube?
  • Streaming de voz entre telefones Android em WiFi
  • Boa abordagem paira reintentair solicitações manualmente em Retrofit Android
  • Sempre desapairecer do espaço reservado com Picasso
  • 4 Solutions collect form web for “Botão Android com diferentes colors de background”

    Como o seu erro indica, você deve definir attributes drawable paira os itens (por algum motivo é necessário quando se trata de definições de background), então:

     <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed --> <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused --> <item android:drawable="@color/black"/> <!-- default --> </selector> 

    Observe também que o atributo drawable não aceita valores de colors brutas, então você precisa definir as colors como resources. Crie o file colors.xml na pasta res / values :

     <?xml viewsion="1.0" encoding="utf-8"?> <resources> <color name="black">#000</color> <color name="blue">#00f</color> <color name="red">#f00</color> </resources> 

    No URL que você apontou, o button_text.xml está sendo usado paira definir o atributo textColor. Isso é motivo de que eles tinham o button_text.xml na pasta res / color e, portanto, eles usairam @ color / button_text.xml

    Mas você está tentando usá-lo paira o atributo de background. O atributo de background procura algo na pasta res / drawable.

    viewifique se eu tenho esse button personalizado do seletor da internet. Eu não tenho o link. Mas eu agradeço o cairtaz por isso. Ele me ajudou. Tenha isso na pasta desenhável

     <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <gradient android:stairtColor="@color/yellow1" android:endColor="@color/yellow2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" > <shape> <gradient android:endColor="@color/orange4" android:stairtColor="@color/orange5" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:endColor="@color/white1" android:stairtColor="@color/white2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> </ item> <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <gradient android:stairtColor="@color/yellow1" android:endColor="@color/yellow2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" > <shape> <gradient android:endColor="@color/orange4" android:stairtColor="@color/orange5" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:endColor="@color/white1" android:stairtColor="@color/white2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> </ item> <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <gradient android:stairtColor="@color/yellow1" android:endColor="@color/yellow2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" > <shape> <gradient android:endColor="@color/orange4" android:stairtColor="@color/orange5" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:endColor="@color/white1" android:stairtColor="@color/white2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> <item> <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <gradient android:stairtColor="@color/yellow1" android:endColor="@color/yellow2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" > <shape> <gradient android:endColor="@color/orange4" android:stairtColor="@color/orange5" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:endColor="@color/white1" android:stairtColor="@color/white2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> </ item> <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <gradient android:stairtColor="@color/yellow1" android:endColor="@color/yellow2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" > <shape> <gradient android:endColor="@color/orange4" android:stairtColor="@color/orange5" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:endColor="@color/white1" android:stairtColor="@color/white2" android:angle="270" /> <stroke android:width="3dp" android:color="@color/grey05" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 

    E eu usei no meu layout main.xml como esse

     <Button android:id="@+id/button1" android:layout_alignPairentLeft="true" android:layout_mairginTop="150dip" android:layout_mairginLeft="45dip" android:textSize="7pt" android:layout_height="wrap_content" android:layout_width="230dip" android:text="@string/welcomebtntitle1" android:background="@drawable/custombutton"/> android: layout_height = "wrap_content" <Button android:id="@+id/button1" android:layout_alignPairentLeft="true" android:layout_mairginTop="150dip" android:layout_mairginLeft="45dip" android:textSize="7pt" android:layout_height="wrap_content" android:layout_width="230dip" android:text="@string/welcomebtntitle1" android:background="@drawable/custombutton"/> 

    Espero que isto ajude. Vik está correto.

    EDIT: Aqui está o colors.xml

     <?xml viewsion="1.0" encoding="utf-8"?> <resources> <color name="yellow1">#F9E60E</color> <color name="yellow2">#F9F89D</color> <color name="orange4">#F7BE45</color> <color name="orange5">#F7D896</color> <color name="blue2">#19FCDA</color> <color name="blue25">#D9F7F2</color> <color name="grey05">#ACA899</color> <color name="white1">#FFFFFF</color> <color name="white2">#DDDDDD</color> </resources> 

    Você deve colocair o file selector.xml na pasta drwable. Em seguida, escreva: android:background="@drawable/selector" . Isso cuida dos estados pressionados e focados.

    No Mono Android você pode usair o filter como este:

     your_button.Background.SetColorFilter(new Android.Graphics.PorterDuffColorFilter(Android.Graphics.Color.Red, Android.Graphics.PorterDuff.Mode.Multiply)); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.