wenn ich versuche zu verwenden: Android.support.v4.widget.CircleImageView
<Android.support.v4.widget.CircleImageView
Android:id="@+id/picture"
Android:layout_width="100dp"
Android:layout_height="100dp"
Android:layout_gravity="center_vertical"
Android:src="@drawable/ic_bg" />
meine App stürzt ab
so unterstützen Sie das neue Material Design Widget CircleImageView
gibt es ein Beispiel, verwenden Sie dieses neue Widget
Logcat
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vogella.Android.recyclerview/com.vogella.Android.recyclerview.MainActivity}: Android.view.InflateException: Binary XML file line #9: Error inflating class Android.support.v4.widget.CircleImageView
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2255)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2309)
at Android.app.ActivityThread.access$700(ActivityThread.Java:157)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1289)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:176)
at Android.app.ActivityThread.main(ActivityThread.Java:5317)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1102)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: Android.view.InflateException: Binary XML file line #9: Error inflating class Android.support.v4.widget.CircleImageView
at
Ich habe einen Ersatz für Android.support.v4.widget.CircleImageView gefunden.
<de.hdodenhof.circleimageview.CircleImageView
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/meal_image_order"
Android:layout_width="96dp"
Android:layout_height="96dp"
Android:src="@drawable/menu1"
app:civ_border_width="2dp"
app:civ_border_color="@color/white"
Android:layout_alignParentTop="true"
Android:layout_alignParentLeft="true" />
Link zur Bibliothek: https://github.com/hdodenhof/CircleImageView
Die Variable CircleImageView
ist eine private Klasse der Unterstützungsbibliothek und kann nicht verwendet werden. Es ist jedoch leicht, diesen Effekt selbst ohne die CircleImageView
zu erzeugen. Sie müssen lediglich einen <shape />
zeichnen, der mit einem transparenten Kreis in der Mitte ähnlich ist:
<shape
Android:innerRadius="0dp"
Android:shape="ring"
Android:thicknessRatio="1"
Android:useLevel="false" >
<solid Android:color="@Android:color/transparent" />
<stroke
Android:width="100dp"
Android:color="#FFFFFFFF" />
</shape>
Danach kombinieren Sie einfach das Bild, das Sie in der ImageView
anzeigen möchten, mit dem <shape />
-Zeichen von oben in einer LayerList
wie folgt:
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/your_image" />
<item Android:drawable="@drawable/circle" />
</layer-list>
Wenn das Bild, das Sie anzeigen möchten, dynamisch ist, können Sie die LayerList
programmgesteuert erstellen!
CircleImageView
ist eine private Klasse von v4
. Sie können sie also grundsätzlich nicht verwenden. Es wird intern zum Rendern des Fortschrittskreises in einer SwipeRefreshLayout
verwendet, soll aber nicht von Ihnen selbst aufgeblasen werden.
Siehe hier als Referenz.
Wenn Sie es in einem nativen Stil tun möchten, verwenden Sie einfach dieses Snippet
<Android.support.v7.widget.CardView
Android:id="@+id/view2"
Android:layout_width="45dp"
Android:layout_height="45dp"
Android:background="#ffffff"
Android:shape="ring"
app:cardCornerRadius="23dp">
<ImageView
Android:id="@+id/profile_img_post"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:scaleType="centerCrop"
Android:src="@drawable/test_img"></ImageView>
</Android.support.v7.widget.CardView>
Einfaches Hinzufügen: Hier Ändern Sie die neueste Bibliotheksversion 2.0.0
in 2.2.0
.
dependencies {
implementation 'de.hdodenhof:circleimageview:2.2.0'
}
Das hat bei mir funktioniert
xML-Layout:
<de.hdodenhof.circleimageview.CircleImageView
Android:id="@+id/picid"
Android:layout_width="270dp"
Android:layout_height="270dp"
Android:src="@drawable/avatar_small"
Android:layout_marginTop="25dp"
/>
Java-Code:
CircleImageView pic = (de.hdodenhof.circleimageview.CircleImageView)rootView.findViewById(R.id.picid);
Erstellen Sie einfach das Projekt neu
- Build ===> Projekt löschen
- Build ===> Projekt neu erstellen
nd wenn nicht funktioniert
File ===> Invaildate Cahses/Restart
Dann wird es funktionieren
1. Use this dependency: compile 'de.hdodenhof:circleimageview:2.0.0'
2. Use this code: -
<de.hdodenhof.circleimageview.CircleImageView
Android:id="@+id/iv_circle"
Android:layout_width="96dp"
Android:layout_height="96dp"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:src="@drawable/thumb"
app:border_color="@color/white"
app:border_width="2dp" />