2016-06-22 3 views
3

Ich habe zwei Buttons verschachtelt in einem LinearLayout. Zwischen diesen Buttons sind zwei TextViews. In der Xml habe ich den Vordergrund auf ein Bild für jeden dieser Buttons festgelegt.Wie führe ich das Vordergrund-Attribut für eine Schaltfläche unterhalb von API 23?

Es läuft gut auf meinem Gerät für Api 23. Auf anderen Geräten unter Api 23 wird das Vordergrundbild jedoch nicht angezeigt und stattdessen wird eine standardmäßige weiße Volltonfarbe angezeigt. Gibt es eine Möglichkeit, diese Bilder im Vordergrund unter Api 23 anzeigen zu lassen?

Wir haben versucht FrameLayout, aber es tut nicht, was wir wollen, dass es tut. Wäre ImageButtons ein besserer Weg, um dieses Problem zu lösen?

Eine der Kernfunktionen unserer App ist, dass jedes Mal, wenn ein Benutzer auf Button tippt, die Größe zunimmt und das Bild entsprechend dehnt. Dies geschieht dynamisch im Code. Wenn ich ImageButtons verwenden würde, müsste ich die Layout-Parameter jedes Mal für Höhe und Breite festlegen, anstatt eine Codezeile, die die Höhe festlegt.

Alle Tipps wären willkommen!

EDIT: Code Ich arbeite mit -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="11" 
    android:background="@android:color/black"> 

    <Button 
     android:layout_weight="5" 
     android:id="@+id/firstP" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:foreground="@drawable/icebutton" 
     android:scaleX="1" 
     android:scaleY="1"/> 

    <TextView 
     android:layout_weight="0.5" 
     android:id="@+id/firstPlayer" 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:rotation="180" 
     android:textColor="@android:color/white" 
     android:background="@android:color/transparent"/> 

    <TextView 
     android:layout_weight="0.5" 
     android:id="@+id/secondPlayer" 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textColor="@android:color/white" 
     android:background="@android:color/transparent"/> 

    <Button 
     android:layout_weight="5" 
     android:id="@+id/secondP" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:foreground="@drawable/firebutton" 
     android:scaleX="1" 
     android:scaleY="1"/> 

</LinearLayout> 
+0

Können Sie uns bitte Ihren Code zeigen! –

+0

Ich habe den Code hinzugefügt, mit dem ich arbeite. Ich versuche derzeit, ImageButtons zu implementieren. @Micho Danke für die Bearbeitung. Ich werde sicherstellen, dass ich in Zukunft richtig formatiere. – Kumar

Antwort

3

Wir fanden heraus, dass es zwei Probleme waren die Bilder verursachen nicht gezeigt werden.
1. Die Größe der Bilddatei war zu groß und es entstand ein outOfMemory Fehler, der wiederum dazu führte, dass die Schaltflächen die Bilder nicht anzeigen.
2. Das Vordergrundattribut funktioniert nicht für API 22 und darunter.

Schritte zur Lösung dieser Probleme:
1. Wir reduzierten die Größe der Bilddateien.
2. Wir ersetzt Button mit ImageButton
3. In der XML Datei, die wir in den Vordergrund Attribut entfernt, hinzugefügt, um das Bild über das src Attribut einen schwarzen Hintergrund, und hinzugefügt. Das Folgende ist ein Ausschnitt.

<ImageButton 
    android:layout_weight="5" 
    android:id="@+id/firstP" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top" 
    android:src="@drawable/icebutton" 
    android:scaleType="fitXY" 
    android:background="@android:color/black"/> 
  1. Wir mussten dann unseren Code ändern, um dynamisch die Höhe der Tasten werden mit Hilfe dieser Verbindung die neue Bild Tasten anzupassen, indem die LayoutParams:
    how to change size of button dynamic in android

Jetzt funktioniert alles perfekt!

+1

API 22! Das war mein Problem. Läuft 21 zum Testen. Vielen Dank. – LimaNightHawk

Verwandte Themen