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:backgroundTint
toevoegen voor API Level 21 en hoger, of app:backgroundTint
voor 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
- Ga naar resolutie
- Breid het uit, klik met de rechtermuisknop op tekenbaar
- Nieuw -> Tekenbaar bronbestand
- 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
- Waarden uitvouwen
- Dubbelklik op colors.xml
- 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
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);