382 Stimmen

Rahmen für eine Bildansicht in Android?

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

6voto

SuperSmartWorld Punkte 91

Rahmen erstellen

Erstellen Sie eine xml-Datei (z.B. "frame_image_view.xml") mit folgendem Inhalt in Ihrem drawable-Ordner:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="@dimen/borderThickness"
        android:color="@color/borderColor" />
    <padding
        android:bottom="@dimen/borderThickness"
        android:left="@dimen/borderThickness"
        android:right="@dimen/borderThickness"
        android:top="@dimen/borderThickness" />
    <corners android:radius="1dp" /> <!-- remove line to get sharp corners -->
</shape>

Ersetzen Sie @dimen/borderThickness y @color/borderColor mit dem, was Sie wollen, oder fügen Sie entsprechende Dimensionen / Farbe.

Fügen Sie das Drawable als Hintergrund zu Ihrer ImageView hinzu:

<ImageView
        android:id="@+id/my_image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/frame_image_view"
        android:cropToPadding="true"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter" />

Sie müssen Folgendes verwenden android:cropToPadding="true" , andernfalls hat die definierte Auffüllung keine Wirkung. Alternativ können Sie auch android:padding="@dimen/borderThickness" in Ihrer ImageView, um das Gleiche zu erreichen. Wenn der Rahmen den Parent statt die ImageView einrahmt, versuchen Sie android:adjustViewBounds="true" .

Farbe der Umrandung ändern

Der einfachste Weg, die Farbe des Rahmens im Code zu ändern, ist die Verwendung des Attributs tintBackgound.

ImageView img = findViewById(R.id.my_image_view);
img.setBackgroundTintList(ColorStateList.valueOf(Color.RED); // changes border color to red

o

ImageView img = findViewById(R.id.my_image_view);
img.setBackgroundTintList(getColorStateList(R.color.newColor));

Vergessen Sie nicht, Ihre newColor .

4voto

Fügen Sie ein Hintergrund-Drawable wie res/drawables/background.xml hinzu:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="@android:color/white" />
  <stroke android:width="1dp" android:color="@android:color/black" />
</shape>

Aktualisieren Sie den Hintergrund der ImageView in res/layout/foo.xml:

...
<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="1dp"
  android:background="@drawable/background"
  android:src="@drawable/bar" />
...

Schließen Sie das ImageView-Padding aus, wenn Sie möchten, dass das src über den Hintergrund gezeichnet wird.

3voto

Atul O Holic Punkte 6484

Dieser Begriff wurde bereits weiter oben verwendet, aber nicht exklusiv erwähnt.

setCropToPadding(boolean);

Si wahr wird das Bild so beschnitten, dass es in seinen Rahmen passt.

Dadurch wird die ImageView Quelle in die dem Hintergrund hinzugefügte Füllung zu passen.

Über XML kann dies wie folgt geschehen

android:cropToPadding="true"

2voto

Khemraj Sharma Punkte 52006

Für diejenigen, die benutzerdefinierte Rahmen und Form von ImageView suchen. Sie können verwenden Android-Formbild-Ansicht

image

Einfach hinzufügen compile 'com.github.siyamed:android-shape-imageview:0.9.+@aar' zu Ihrem build.gradle .

Und in Ihrem Layout verwenden.

<com.github.siyamed.shapeimageview.BubbleImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/neo"
    app:siArrowPosition="right"
    app:siSquare="true"/>

2voto

Cabezas Punkte 8203

Sie müssen eine background.xml in res/drawable mit diesem Code erstellen

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<corners android:radius="6dp" />
<stroke
    android:width="6dp"
    android:color="@android:color/white" />
<padding
    android:bottom="6dp"
    android:left="6dp"
    android:right="6dp"
    android:top="6dp" />
</shape>

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