web-dev-qa-db-fra.com

android.support.v4.widget.CircleImageView ne fonctionne pas

quand j'essaie d'utiliser: 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" />

ça fait planter mon application

comment soutenir le nouveau Material Design Widget CircleImageView

y at-il un exemple utiliser 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.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

J'ai trouvé un remplaçant pour Android.support.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

46
Maher Ismaail

CircleImageView est une classe privée de la bibliothèque de support et ne peut pas être utilisée. Mais il est facile de créer cet effet vous-même sans la CircleImageView. Il vous suffit de définir un <shape /> pouvant être tracé avec un cercle transparent au milieu, semblable à 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, combinez simplement l'image que vous voulez afficher dans la ImageView avec le <shape /> dessiné d'en haut dans une 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 voulez afficher est dynamique, vous pouvez créer la LayerList par programme!

54
Xaver Kapeller

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

Voir ici pour référence.

18
natario

Si vous voulez le faire dans un style natif, utilisez simplement 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>
7
Vikash Sharma

Ajout simple: ici Changer la dernière version de la bibliothèque 2.0.0 en 2.2.0

dependencies {

 implementation 'de.hdodenhof:circleimageview:2.2.0'

}
5
Chirag Patel

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