Abgerundete Ecken Android-Bildschaltflächen

Lesezeit: 5 Minuten

Ich versuche, Ecken auf einem Android ImageButton abzurunden, der Code sieht so aus;

<?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">

    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageButton"
            android:layout_marginTop="57dp"
            android:src="https://stackoverflow.com/questions/21633637/@drawable/friends"
            android:padding="1dp"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/imageButton2"
            android:layout_marginRight="62dp" />

    </RelativeLayout>
</LinearLayout>

Grundsätzlich ist unsere Ausgabe ein ImageButton, aber es hat eckige Ecken, wir versuchen, die Ecken abzurunden.

Danke

  • stackoverflow.com/questions/16791449/…. Verwenden Sie einen Selektor und diesen stackoverflow.com/questions/12771367/…

    – Raghunandan

    7. Februar 2014 um 17:08 Uhr


Benutzeravatar von Nambi
Nambi

Verwenden Form in Android, um die runderen Ecken zu machen

Erstellen Sie die XML-Datei mit dem Namen roundcorner.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <solid android:color="#33DDFF" />
        <corners android:radius="4dp" />
    </shape>

Fügen Sie in Ihrem ImageButton dieses Attribut hinzu android:background="@drawable/roundcorner"

<ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/imageButton"
                android:layout_marginTop="57dp"
                android:src="https://stackoverflow.com/questions/21633637/@drawable/friends"
                android:background="@drawable/roundcorner"
                android:padding="1dp"
                android:layout_alignParentTop="true"
                android:layout_toLeftOf="@+id/imageButton2"
                android:layout_marginRight="62dp" />

  • Vielen Dank, es funktioniert einwandfrei. Ich frage mich, warum es kein XML-Attribut gibt, damit wir es schneller machen können..!

    – Kwnstantinos Nikoloutsos

    24. Juni 2018 um 0:26 Uhr


  • Diese Lösung funktionierte bei mir nicht, aber nachdem ich die Eigenschaft android:shape auf “ring” gesetzt hatte, funktionierte sie. Ich denke, Sie haben diesen Teil wahrscheinlich verpasst.

    schemas.android.com/apk/res/android” android:shape=”ring”>

    – Md Golam Rahman Tushar

    12. Februar 2019 um 11:02 Uhr

Benutzeravatar von 2Dee
2Dee

Sie könnten zum Beispiel einen Selektor aus Shape Drawables als Hintergrund verwenden:

rounded_bg.xml (wird im Ordner res/drawable-nodpi erstellt)

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="#ffffff" />
    <corners
        android:bottomLeftRadius="4dp"
        android:bottomRightRadius="4dp"
        android:topLeftRadius="4dp"
        android:topRightRadius="4dp" />

</shape>

Erstellen Sie ein weiteres und ändern Sie die Farbe, auf die verwiesen wird solid android:color="#ffffff" zum Beispiel zu solid android:color="#ff0000" und benennen Sie diese Datei rounded_bg_selected.xml

Erstellen Sie den Selektor (auch in res/drawable-nodpi), benennen Sie ihn selectable_button_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" 
        android:drawable="@drawable/rounded_bg_selected" />
    <item  android:state_focused="false" 
        android:drawable="@drawable/rounded_bg" />
</selector>

Verweisen Sie dann in Ihrem Layout darauf:

<ImageButton
     android:background="@drawable/selectable_button_bg"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/imageButton"
     android:layout_marginTop="57dp"
     android:src="https://stackoverflow.com/questions/21633637/@drawable/friends"
     android:padding="1dp"
     android:layout_alignParentTop="true"
     android:layout_toLeftOf="@+id/imageButton2"
     android:layout_marginRight="62dp" />

Erstellen image_rounded_corner.xml innerhalb von /res/drawable

<?xml version="1.0" encoding="UTF-8" ?> 
  <shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="#000000" /> 
  <stroke android:width="3dp" android:color="#776da8" /> 
  <corners android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp" android:topLeftRadius="5dp" android:topRightRadius="5dp" /> 
  <padding android:left="2dp" android:top="2dp" android:right="2dp" android:bottom="2dp" /> 
  </shape>

Rufen Sie die Datei image_rounded_corner.xml mit auf android:background

<ImageView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/myimage" 
           android:src="https://stackoverflow.com/questions/21633637/@drawable/icon"
           android:background="@drawable/image_rounded_corner" /> 

oder verwenden Sie eine Zeichnen Sie 9-Patch Datei wie “Artoo Detoo” vorgeschlagen.

Verwenden Sie dies: Legen Sie dies in den res/drawable-Ordner

mein_gradient.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <corners android:radius="100dp" />

    <stroke
        android:width="5dp"
        android:color="#090" />

</shape>

Geben Sie in Ihrem ImageButton einfach Folgendes ein:

android:background="@drawable/my_gradient"

 public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.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(PorterDuff.Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint);
    return output;
  }

Dieser Code wird Ihnen helfen. (Aus einem chinesischen Artikel:http://www.cnblogs.com/liuweiming/archive/2012/04/23/2466074.html)

  • Sehr schön, soweit ich das beurteilen kann, ist dies die einzige Lösung, die die Bitmap-Ecken tatsächlich abrundet. Die Antworten, die einen Hintergrund setzen, zeichnen nur einen abgerundeten Umriss unter dem Bild, aber die Bildecken sind immer noch quadratisch. Um eine Bitmap zu verarbeiten, die bereits einem ImageButton zugewiesen ist, können Sie etwa so vorgehen: BitmapDrawable bmd = (BitmapDrawable)btn.getDrawable(); btn.setImageBitmap(toRoundCorner(bmd.getBitmap(), 15));

    – Georgie

    26. März 2022 um 7:40 Uhr


  • Sehr schön, soweit ich das beurteilen kann, ist dies die einzige Lösung, die die Bitmap-Ecken tatsächlich abrundet. Die Antworten, die einen Hintergrund setzen, zeichnen nur einen abgerundeten Umriss unter dem Bild, aber die Bildecken sind immer noch quadratisch. Um eine Bitmap zu verarbeiten, die bereits einem ImageButton zugewiesen ist, können Sie etwa so vorgehen: BitmapDrawable bmd = (BitmapDrawable)btn.getDrawable(); btn.setImageBitmap(toRoundCorner(bmd.getBitmap(), 15));

    – Georgie

    26. März 2022 um 7:40 Uhr


1443040cookie-checkAbgerundete Ecken Android-Bildschaltflächen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy