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
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
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!
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.
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>
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'
}
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);
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" />