382 Stimmen

Rahmen für eine Bildansicht in Android?

Wie kann ich einen Rahmen für eine ImageView und seine Farbe in Android ändern?

1voto

Randika Vishman Punkte 7603

Hier ist meine einfachste Lösung für dieses langwierige Problem.

<FrameLayout
    android:layout_width="112dp"
    android:layout_height="112dp"
    android:layout_marginLeft="16dp" <!-- May vary according to your needs -->
    android:layout_marginRight="16dp" <!-- May vary according to your needs -->
    android:layout_centerVertical="true">
    <!-- following imageView acts as the boarder which sitting in the background of our main container ImageView -->
    <ImageView
        android:layout_width="112dp"
        android:layout_height="112dp"
        android:background="#000"/>
    <!-- following imageView holds the image as the container to our image -->
    <!-- layout_margin defines the width of our boarder, here it's 1dp -->
    <ImageView
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:layout_margin="1dp"
        android:id="@+id/itemImageThumbnailImgVw"
        android:src="@drawable/banana"
        android:background="#FFF"/> </FrameLayout>

Im Folgenden répondre Ich habe es gut genug erklärt, bitte sehen Sie sich das auch an!

Ich hoffe, dass dies für jemanden da draußen hilfreich ist!

1voto

porquero Punkte 1064

In der gleichen xml habe ich folgendes verwendet:

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff" <!-- border color -->
        android:padding="3dp"> <!-- border width -->

        <ImageView
            android:layout_width="160dp"
            android:layout_height="120dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:scaleType="centerCrop" />
    </RelativeLayout>

1voto

Achintha Isuru Punkte 1846

Fügen Sie zunächst die Hintergrundfarbe hinzu, die Sie als Farbe Ihres Rahmens wünschen, und dann enter image description here

Ändern Sie cropToPadding auf true und fügen Sie anschließend padding hinzu.

Dann haben Sie Ihren Rahmen für Ihre imageView.

1voto

mochadwi Punkte 984

Ich hätte das Thema fast aufgegeben.

Dies ist meine Bedingung, die Glide zum Laden von Bildern verwendet, siehe detailliertes Problem mit abgerundeten Ecken hier y aquí

Ich habe auch die gleichen Attribute für meine ImageView , für alle antworten hier 1 , hier 2 & hier 3

android:cropToPadding="true"
android:adjustViewBounds="true"
android:scaleType="fitCenter"`
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/path_to_rounded_drawable"

Aber immer noch kein Erfolg.

Nachdem ich eine Weile recherchiert hatte, verwendete ich eine foreground Attribute von diese SO Antwort hier ein Ergebnis vorweisen android:foreground="@drawable/all_round_border_white"

Leider bekomme ich die "unschöne" Randecke wie im Bild unten:

enter image description here

1voto

DEEz Punkte 59

Sie können 9 Patch in Android Studio verwenden, um Ränder zu erstellen!

Ich habe nach einer Lösung gesucht, aber ich habe keine gefunden, also habe ich diesen Teil übersprungen.

Dann ging ich zu den Google-Bildern von Firebase-Assets und ich entdeckte zufällig, dass sie 9patch verwenden.

9patch in action

Hier ist der Link: https://developer.Android.com/studio/write/draw9patch

Sie müssen nur dort ziehen, wo die Kanten sind.

Es ist genau wie die Randleiste in Unity.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X