webentwicklung-frage-antwort-db.com.de

android.support.v4.widget.CircleImageView funktioniert nicht

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
48
Maher Ismaail

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

46
Maher Ismaail

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!

54
Xaver Kapeller

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.

18
natario

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>
7
Vikash Sharma

Einfaches Hinzufügen: Hier Ändern Sie die neueste Bibliotheksversion 2.0.0 in 2.2.0.

dependencies {

 implementation 'de.hdodenhof:circleimageview:2.2.0'

}
5
Chirag Patel

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);
3
ozma

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
Samer Kasseb
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" />
0
Yamini