Hoe verander ik de kleur van een knop?

Ik ben nieuw in Android-programmeren. Hoe verander ik de kleur van een knop?

<Button
    android:id="@+id/btn"
    android:layout_width="55dp"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:text="Button Text"
    android:paddingBottom="20dp"/>

Antwoord 1, autoriteit 100%

Je kunt de kleur op twee manieren veranderen; via XML of via codering. Ik zou XML aanbevelen omdat het gemakkelijker te volgen is voor beginners.

XML:

<Button
    android:background="@android:color/white"
    android:textColor="@android:color/black"
/>

U kunt ook hexadecimale waarden gebruiken, bijv.

android:background="@android:color/white"

Coderen:

//btn represents your button object
btn.setBackgroundColor(Color.WHITE);
btn.setTextColor(Color.BLACK);

Antwoord 2, autoriteit 93%

De JUISTE manier…

De volgende methoden werken echt.

als je wilt – gebruik een thema
De kleur van een knop is standaard android:colorAccent. Dus, als je een stijl als deze maakt…

<style name="Button.White" parent="ThemeOverlay.AppCompat">
    <item name="colorAccent">@android:color/white</item>
</style>

Je kunt het zo gebruiken…

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/Button.White"
    />

alternatief – een tint gebruiken
U kunt eenvoudig android:backgroundTinttoevoegen voor API Level 21 en hoger, of app:backgroundTintvoor API Level 7 en hoger.

Zie voor meer informatie deze blog.

Het probleem met het geaccepteerde antwoord…

Als u de achtergrond door een kleur vervangt, verliest u het effect van de knop en wordt de kleur toegepast op het hele gebied van de knop. Het respecteert de opvulling, schaduw en hoekradius niet.


Antwoord 3, autoriteit 39%

Voor de tekstkleurvoeg je toe:

android:textColor="<hex color>"

Voor de achtergrondkleurvoeg je toe:

android:background="<hex color>"

Vanaf API 21kunt u het volgende gebruiken:

android:backgroundTint="<hex color>"
android:backgroundTintMode="<mode>"

Opmerking:als je met Android/java gaat werken, moet je echt leren googlen 😉
Hoe verschillende knoppen in Android aan te passen


Antwoord 4, autoriteit 7%

Hier is mijn code, om verschillende kleuren op de knop te maken, en Lineaire, Constraint en Scroll Layout

Eerst moet je een custom_button.xml maken op je tekenbare

  1. Ga naar resolutie
  2. Breid het uit, klik met de rechtermuisknop op tekenbaar
  3. Nieuw -> Tekenbaar bronbestand
  4. Bestandsnaam: custom_button, klik op OK

Custom_Button.xml-code

<?xml version="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>

Ten tweede, ga naar res

  1. Waarden uitvouwen
  2. Dubbelklik op colors.xml
  3. Kopieer de onderstaande code

Colors.xml-code

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <color name="black">#000</color>
    <color name="violet">#9400D3</color>
    <color name="indigo">#4B0082</color>
    <color name="blue">#0000FF</color>
    <color name="green">#00FF00</color>
    <color name="yellow">#FFFF00</color>
    <color name="orange">#FF7F00</color>
    <color name="red">#FF0000</color>
</resources>

Screenshots hieronder


XML-codering

Ontwerpvoorbeeld


Antwoord 5, autoriteit 5%

Via programmering:

btn.setBackgroundColor(getResources().getColor(R.color.colorOffWhite));

en uw colors.xml moet bevatten…

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="colorOffWhite">#80ffffff</color>
</resources>

Antwoord 6, autoriteit 5%

Veel geweldige methoden hierboven gepresenteerd – Een nieuwere opmerking

Het lijkt erop dat er een bug in eerdere versies van Materiaal zat die verhinderde dat bepaalde typen de knopkleur overschreven.

Zie: [Knop] android:achtergrond werkt niet #889

Ik gebruik vandaag materiaal 1.3.0. Ik volgde gewoon de richting van KavinduDissanayake in de gelinkte post en gebruikte dit formaat:

app:backgroundTint="@color/purple_700"

(Ik heb de gekozen kleur natuurlijk veranderd in mijn eigen thema.) Deze oplossing werkte voor mij heel eenvoudig.


Antwoord 7, autoriteit 2%

U kunt de waarde in de XML als volgt wijzigen:

<Button
    android:background="#FFFFFF"
     ../>

Hier kun je elke andere kleur toevoegen, uit de bronnen of hex.

Op dezelfde manier kunt u deze waarden ook als volgt uit de code wijzigen:

demoButton.setBackgroundColor(Color.WHITE);

Een andere gemakkelijke manier is om een tekenbaar te maken, de hoeken en vorm aan te passen aan uw voorkeur en de achtergrondkleur en lijn van het tekenbare in te stellen.
Voor bijv.

button_background.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="2dp" android:color="#ff207d94" />
    <corners android:radius="5dp" />
    <solid android:color="#FFFFFF" />
</shape>

En stel deze vorm dan in als achtergrond van je knop.

<Button
    android:background="@drawable/button_background.xml"
     ../>

Hopelijk helpt dit, veel succes!


Antwoord 8, autoriteit 2%

Als de eerste oplossing niet werkt, probeer dan dit:

android:backgroundTint="@android:color/white"

Ik hoop dat dit werkt.
Veel plezier met coderen.


Antwoord 9

Als je de achtergrond probeert in te stellen als een ander bronbestand in je tekenbare map, bijvoorbeeld een custom-button.xml, probeer dan dit:

button_name.setBackgroundResource(R.drawable.custom_button_file_name);

bijv. Stel, je hebt een custom-button.xml-bestand. Dan,

button_name.setBackgroundResource(R.drawable.custom_button);

Zal de knopachtergrond instellen als het bestand custom-button.xml.


Antwoord 10

Zie de afbeelding en eenvoudig begrijpen


Antwoord 11

Ik heb hetzelfde probleem
De oplossing voor mij was de achtergrondkleur was colorprimary van mijn thema
U kunt aangepast thema gebruiken als één antwoord, zeg hierboven en stel het colorprimary in op wat u wilt

1- Voeg dit toe aan uw “waarde / thema’s / thema’s.xml” Inside Resources

<resources>
   <style name="Button.color" parent="ThemeOverlay.AppCompat">
       <item name="colorPrimary">@color/purple_500</item>
   </style>
</resources>

2- Voeg deze regel toe aan de knop die u wilt hebben de kleur

   <Button
      android:theme="@style/Button.color"/>

Antwoord 12

Beste manier om de knopkleur te wijzigen zonder knoopghosting en andere functies te verliezen.

Probeer het en je zult zien dat het de beste

is

app:backgroundTint="@color/color_name"

Antwoord 13

Om de kleur van de knop programmatisch

te wijzigen

Hier is het:

Button b1;
//colorAccent is the resource made in the color.xml file , you can change it.
b1.setBackgroundResource(R.color.colorAccent);  

Other episodes