Button nehmen den Style nicht an

  • Antworten:18
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 650

22.04.2024, 21:13:42 via Website

Hallo zusammen

In meiner App kann ich machen was ich will, die Buttons nehmen den Style nicht an. Ich habe es mit einer Styledatei versucht.

<?xml version="1.0" encoding="utf-8"?>



android:color="@color/background_button" >

<!-- View border color and width -->
<stroke
    android:width="4dp"
    android:color="@color/black" >
</stroke>

<!-- The radius makes the corners rounded -->
<corners
    android:radius="10dp"   >
</corners>

Auch habe ich ein Bildli gemacht

image

Die Button bleiben einfach violett, sonst nichts.

image

Hier noch das Layout

<?xml version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
tools:viewBindingIgnore="false" >

<TextView
    android:id="@+id/txt_anzeige"
    style="@style/display_gross"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/my_border"
    android:gravity="center_horizontal" />

<LinearLayout
    android:id="@+id/lay_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/btn_eins"
        style="@style/Widget.AppCompat.Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/button_lang_blau"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="1"
        android:textColorLink="@color/black"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btn_zwei"
        style="@style/Widget.AppCompat.Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/button_lang_blau"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="2"
        android:textColorLink="@color/black"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btn_drei"
        style="@style/Widget.AppCompat.Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/button_lang_blau"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="3"
        android:textColorLink="@color/black"
        android:textStyle="bold" />

    <Button
        android:id="@+id/btn_vier"
        style="@style/Widget.AppCompat.Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@drawable/button_lang_blau"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="4"
        android:textColorLink="@color/black"
        android:textStyle="bold" />
</LinearLayout>

Ich habe schon alles probiert. Komme aber nicht weiter.
Wo liegt das Problem?

Gruss Renato

Kommentieren
Beste Antwort
Robbiani Renato
  • Forum-Beiträge: 650

04.05.2024, 21:59:41 via Website

Ich konnte endlich das Problem lösen.

Anstelle von

<Button

habe ich

<androidx.appcompat.widget.AppCompatButton 

Genommen und nun werden die Buttons richtig mit Hintergrund dargestellt.

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

23.04.2024, 10:49:42 via Website

android:id="@+id/btn_vier"
style="@style/Widget.AppCompat.Button"

Hier setzt du ja einen Standard Style von Android und nicht deinen.
Wie heißt deine Datei?

Wobei ich mir mit deiner Style Datei auch nicht sicher bin
Die fangen doch immer mit

<item name … An.

https://developer.android.com/develop/ui/views/theming/themes?hl=de

— geändert am 23.04.2024, 10:53:04

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

23.04.2024, 17:23:21 via Website

Ciao Jokel

Danke für deine Hilfe.
Genau das habe ich getan und trotzdem funktioniert es nicht.

<?xml version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
tools:viewBindingIgnore="false" >

<TextView
    android:id="@+id/txt_anzeige"
    style="@style/display_gross"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/my_border"
    android:gravity="center_horizontal" />

<LinearLayout
    android:id="@+id/lay_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/btn_eins"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="1"
        android:textColorLink="@color/black" />

    <Button
        android:id="@+id/btn_zwei"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="2"
        android:textColorLink="@color/black" />

    <Button
        android:id="@+id/btn_drei"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="3"
        android:textColorLink="@color/black" />

    <Button
        android:id="@+id/btn_vier"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="4"
        android:textColorLink="@color/black" />
</LinearLayout>

und meine styles.xml

<?xml version="1.0" encoding="utf-8"?>



24sp
bold
false

<style name="button_gross">
    <item name="android:textSize">16dp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:background">@drawable/button_lang_blau</item>
</style>

Wo da wohl das Problem liegt?

Gruss Renato

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

23.04.2024, 17:55:47 via Website

Ich werde den Verdacht nicht los, dass das ein Problem vom Android-Studio ist. Denn ich habe in einem älteren Projekt dasselbe gemacht. Siehe da es geht auch nicht.

Gruss Renato

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

23.04.2024, 18:05:21 via Website

Wenn ich ein ImageButton nehme, dann wird der Style übernommen. Aber ich kann kein Text schreiben. Das ist doof.

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

23.04.2024, 21:23:06 via Website

Textsitze wird doch sp und nicht in dp angegeben.
Und bei xml auch in "" das sollte beim Style auch so sein.

android:textSize="36sp"

Auch würde ich beim Style auf Vererbung setzen.

https://stackoverflow.com/questions/44382003/set-default-font-size-in-styles-xml

— geändert am 23.04.2024, 21:31:18

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

27.04.2024, 21:37:38 via Website

Ciao Jokel

Danke für die Hilfe. Meine Datei sieht nun wie folgt aus:

<?xml version="1.0" encoding="utf-8"?>



24sp
bold
false

<style name="button_gross" parent="@style/Widget.AppCompat.Button">
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:background">@drawable/button_lang_blau</item>
</style>

Bringt aber keine Besserung. Was nun?

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

28.04.2024, 10:56:00 via Website

16sp ist ja auch recht klein.
Das kommt bei mir den default sehr nahe.
Benutze mal 20 plus da habe ich dann einen unterschied gesehn.

Bei ging es sorgar ohen Vererbung.

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

28.04.2024, 18:02:21 via Website

Ciao Jokel

Default ist 14. Aber das Problem ist nicht die Schrifftgrösse. Sondern die Buttons sind einfach violet und übernehmen die Grafik nicht. Ich habe extra einen Button gestaltet. Aber der erscheint einfach nicht.

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

29.04.2024, 08:42:33 via Website

Wo befindet sich den der Button?
Im Layout oder in der Appbar, Toolbar?

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

29.04.2024, 09:31:38 via Website

Ciao Jokel

Der Button befindet sich im Layout.

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

29.04.2024, 10:47:28 via Website

Dann zeige das noch mal.
Aber bitte richtIg als code ohne das daß Forum etwas verschluckt.

Bei mir ging das ohne Probleme. Kann aber erst heure abend schauen.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

29.04.2024, 11:24:14 via Website

Die Hintergrund Farbe ist doch
android:backgroundTint=

am besten
app:backgroundTint="@color/my_color_selector"
....

— geändert am 29.04.2024, 11:27:31

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

29.04.2024, 17:45:09 via Website

Ciao Jokel

Möglicherweise habe ich mich nicht ganz klar ausgedrückt, was mein Problem ist.
Wenn ich einen ImageButton anlege und ihm den Style zuweise, dann sieht es wie folgt aus:

image

Lege ich hingegen einen Button an, dann sieht es so aus.

image

Wenn ich nun meinem Button aber den Styl zuweise dann erhalte ich folgendes Bild

image

Eigentlich erwarte ich dasselbe aussehen wie beim ImageButten. Tut es aber nicht. Wenn es bei dir dasselbe Resultat gibt, dann muss ich davon ausgehen, dass dies ein Problem von Android-Studio ist.

Nur im Fall lege ich noch die Layout-Datei hin.

<?xml version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
tools:viewBindingIgnore="false">

<TextView
    android:id="@+id/txt_anzeige"
    style="@style/display_gross"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/my_border"
    android:gravity="center_horizontal" />

<LinearLayout
    android:id="@+id/lay_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/btn_eins"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="1"
        android:textColorLink="@color/black" />

    <Button
        android:id="@+id/btn_zwei"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="2"
        android:textColorLink="@color/black" />

    <Button
        android:id="@+id/btn_drei"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="3"
        android:textColorLink="@color/black" />

    <Button
        android:id="@+id/btn_vier"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:stateListAnimator="@android:animator/fade_in"
        android:text="4"
        android:textColorLink="@color/black" />

</LinearLayout>

<LinearLayout
    android:id="@+id/lay_test"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/imageButton"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <Button
        android:id="@+id/button2"
        style="@style/button_gross"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button" />
</LinearLayout>

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

29.04.2024, 19:24:04 via Website

wenn ich das im style benutze ist es bei mir genauso

<item name="android:background">@drawable/button_lang_blau</item>

ich verstehe auch nicht was du bei einem Button mit einem Drawable willst.

farbe etwa so.

 <style name="button_gross">
        <item name="android:textSize">16sp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:backgroundTint">#4623</item>
 </style>

— geändert am 29.04.2024, 19:24:33

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 650

29.04.2024, 20:21:09 via Website

Ciao Jokel

Ich verstehe die Welt nicht mehr. Bei Buttons habe ich den Hintergrund immer im Abschnitt "drawable" abgelegt. Es handelt sich hier um png-Dateine. Also Bilder oder Zeichnungen. Die gehören in diesen Abschnitt. Oder habe ich es bisher falsch gemacht?

Was ich ebenfalls nicht verstehe ist, warum geht es bei einem ImageButtoen, aber nicht bei einem Button. Das ist doch fast daselbe. Oder nicht?

Gruss Renato

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

30.04.2024, 09:41:19 via Website

Was ich ebenfalls nicht verstehe ist, warum geht es bei einem ImageButtoen, aber nicht bei einem Button. Das ist doch fast daselbe. Oder nicht?

Nein ist es nicht.
Ein ImageButton ist ein Bild was Klickbar ist.
Ein Button ist eine Grafik die Android selber zeichnet und anzeigt. Wenn du jetzt in einem Bild gibst wird er seine eigne Zeichnung durch deine ersetzen. Wenn du nun Richtlinien (Styltes) erstellt für das Aussehen zb runde ecken dann wird dein Bild etwas bearbeitet beschnitten. Bei einer Grafik voll Flächig kommt vielleicht der Effekt zustande den du willst.

Das was du hier machst ist etwas was zu Zeiten von Android 2.2 üblich notwendig war, um einen Button in einer anderen Farbe darzustellen.
Den damals waren Butten nicht veränderbar. Das kam erst später. könnte das Material Design gewesen sein.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.547

30.04.2024, 11:00:33 via Website

füher habe ich das mal so gemacht

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/btn_default_pressed"/>
    <item android:state_focused="false" android:state_enabled="true" android:drawable="@drawable/btn_default_normal_red"/>
    <item android:state_focused="false" android:state_enabled="false" android:drawable="@drawable/btn_default_normal_disable"/>
    <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/btn_default_selected"/>
    <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal_red"/>
    <item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused"/>
    <item android:drawable="@drawable/btn_default_normal_disable"/>
</selector>

image

  <style name="wd_start_end_button" parent="@style/wd_global">
<item name="android:textSize">28.0dip</item>
<item name="android:textStyle">bold</item>
<item name="android:padding">10.0dip</item>
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">7.0dip</item>
</style>

layout dann so

        <Button android:id="@+id/cmd_start" style="@style/wd_start_end_button" android:text="@string/cmd_start" android:onClick="onButtonClick"/>

— geändert am 30.04.2024, 11:11:34

Hilfreich?
Kommentieren
Beste Antwort
Robbiani Renato
  • Forum-Beiträge: 650

04.05.2024, 21:59:41 via Website

Ich konnte endlich das Problem lösen.

Anstelle von

<Button

habe ich

<androidx.appcompat.widget.AppCompatButton 

Genommen und nun werden die Buttons richtig mit Hintergrund dargestellt.

Gruss Renato

Hilfreich?
Kommentieren