Wie kann ich einen Rahmen für eine ImageView
und seine Farbe in Android ändern?
Antworten
Zu viele Anzeigen?Ich setze das untenstehende Xml auf den Hintergrund der Bildansicht als Drawable. Es funktioniert.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke android:width="1dp" android:color="#000000" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
android:bottom="1dp" />
</shape>
Und dann hinzufügen android:background="@drawable/yourXmlFileName"
zu Ihrem ImageView
Im Folgenden finden Sie den Code, den ich verwendet habe, um einen schwarzen Rand zu erhalten. Beachten Sie, dass ich keine extra xml-Datei für den Rand verwendet habe.
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/red_minus_icon"
android:background="#000000"
android:padding="1dp"/>
ImageView
in xml-Datei
<ImageView
android:id="@+id/myImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:padding="1dp"
android:scaleType="centerCrop"
android:cropToPadding="true"
android:background="@drawable/border_image"
android:src="@drawable/ic_launcher" />
Speichern Sie den folgenden Code unter dem Namen border_image.xml
und es sollte sich im Ordner "drawable" befinden
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="270"
android:endColor="#ffffff"
android:startColor="#ffffff" />
<corners android:radius="0dp" />
<stroke
android:width="0.7dp"
android:color="#b4b4b4" />
</shape>
Wenn Sie den Rand des Bildes mit abgerundeten Ecken versehen möchten, können Sie eine Zeile in der Datei border.xml ändern
<corners android:radius="4dp" />
Ich weiß, dass dies ein alter Beitrag ist, aber ich dachte, er könnte vielleicht jemandem da draußen helfen.
Wenn Sie einen durchscheinenden Rand simulieren möchten, der die "einfarbige" Farbe der Form nicht überlagert, dann verwenden Sie dies in Ihrer Xml. Beachten Sie, dass ich das "stroke"-Tag hier überhaupt nicht verwende, da es die eigentliche gezeichnete Form immer zu überlappen scheint.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="#55111111" />
<padding
android:bottom="10dp"
android:left="10dp"
android:right="10dp"
android:top="10dp" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle" >
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<solid android:color="#ff252525" />
</shape>
</item>
</layer-list>
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
.
- See previous answers
- Weitere Antworten anzeigen