Android.soutien.v4.widget.CircleImageView ne fonctionne pas

lorsque j'essaie d'utiliser : Android.soutien.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" />

ça fait mon appli crash

comment prendre en charge la conception de nouveaux matériaux Widget CircleImageView

y a-t-il un exemple d'utilisation de ce nouveau 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.access0(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
44
demandé sur Maher Ismaail 2015-05-20 13:22:39

6 réponses

CircleImageView est une classe privée de la bibliothèque de soutien et ne peut pas être utilisé. Mais il est facile de créer cet effet vous-même, sans l' CircleImageView. Vous avez juste besoin de définir un <shape /> drawable transparent cercle au milieu similaire à ceci:

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

après cela il suffit de combiner l'image que vous voulez afficher dans le ImageView<shape /> drawable à partir de ci-dessus dans un LayerList comme ceci:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/your_image" />
    <item android:drawable="@drawable/circle" />
</layer-list>

Si l'image que vous souhaitez afficher est dynamique, alors vous pouvez créer le LayerList par programmation!

51
répondu Xaver Kapeller 2015-08-01 16:30:49

j'ai trouvé un remplaçant pour android.soutien.v4.widget.CircleImageView.

<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" />

lien de la Bibliothèque: https://github.com/hdodenhof/CircleImageView

43
répondu Maher Ismaail 2018-06-19 10:29:39

CircleImageView est une classe privée de v4, donc en gros vous ne pouvez pas l'utiliser. Il est utilisé en interne pour rendre le cercle de progression dans un SwipeRefreshLayout, mais n'est pas destiné à être rempli par vous-même.

Voir ici pour référence.

18
répondu natario 2015-05-20 10:42:13

si vous voulez le faire dans un style natif il suffit d'utiliser cet extrait

            <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>
5
répondu Vikash Sharma 2017-11-27 03:01:15

C'est ce qui a fonctionné pour moi

mise en page xml:

  <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"
            />

code Java:

CircleImageView pic = (de.hdodenhof.circleimageview.CircleImageView)rootView.findViewById(R.id.picid);
2
répondu ozma 2016-09-23 23:13:20
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
répondu Yamini 2018-04-24 08:02:43