0

Ich möchte eine einfache kreisförmigen ImageButton wie unten gezeigt, die in Android API-Versionen von 16 oder höher unterstützt wird erstellen.Circular Button funktioniert nicht auf Android API-16 (Jelly Bean)

<ImageButton android:layout_width="70dp" 
android:layout_height="70dp" 
android:id="@+id/myButton" 
android:background="@drawable/circular_button" /> 

Mein circular_button.xml innerhalb ziehbar Ordner sieht wie folgt aus:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="false"> 
     <shape android:shape="oval"> 
      <solid android:color="#fa09ad"/> 
     </shape> 
    </item> 
    <item android:state_pressed="true"> 
     <shape android:shape="oval"> 
      <solid android:color="#c20586"/> 
     </shape> 
    </item> 
</selector> 

Dinge auf Android Lollipop funktionieren (API 21) und dieser, wie der Image aussieht:

enter image description here

Aber auf älteren Android-Versionen (API 16) sieht es so aus:

enter image description here

Irgendeine Idee, wie man das gelöst bekommt? Danke!

+0

haben Sie versucht, stattdessen ImageView zu verwenden? – Sheychan

+0

Ihr Bild wird nicht geladen. fügen Sie sie wieder –

+0

Ich habe versucht, aber das hat nicht so gut funktioniert. Außerdem benötige ich eine kreisförmige Schaltfläche, die sowohl ein Symbol als auch einen Text enthält. @Sheychan – kds23

Antwort

0

Bearbeiten Mein Fehler: Bitte versuchen Sie unten Code, ich benutzte es in meinem eigenen Code und es funktioniert perfekt für runde Bilder.

public class ImageHelper { 
    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) { 
     Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap 
       .getHeight(), Config.ARGB_8888); 
     Canvas canvas = new Canvas(output); 

     final int color = 0xff424242; 
     final Paint paint = new Paint(); 
     final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
     final RectF rectF = new RectF(rect); 
     final float roundPx = pixels; 

     paint.setAntiAlias(true); 
     canvas.drawARGB(0, 0, 0, 0); 
     paint.setColor(color); 
     canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

     paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
     canvas.drawBitmap(bitmap, rect, rect, paint); 

     return output; 
    } 
} 
+1

Was ist die Erklärung, warum dies das Problem beheben wird? –

+0

Dies hat das Problem nicht behoben! @Android Geek – kds23

+0

@ user3500989 Wenn Sie Probleme bei der Verwendung dieses Codes konfrontiert, können Sie fragen. –