私が使用しようとすると: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" />
アプリがクラッシュする
新しいマテリアルデザインウィジェットCircleImageViewをサポートする方法
この新しいウィジェットを使用する例はありますか
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
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" />
CircleImageView
はサポートライブラリのプライベートクラスであり、使用できません。ただし、CircleImageView
を使用せずにこのエフェクトを自分で簡単に作成できます。次のような<shape />
ドロアブルを定義する必要があります。
<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>
その後、ImageView
に表示したい画像を、上からLayerList
にある<shape />
ドロアブルと、次のように組み合わせます。
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/your_image" />
<item Android:drawable="@drawable/circle" />
</layer-list>
表示したい画像が動的な場合、LayerList
をプログラムで作成できます!
CircleImageView
はv4
からのプライベートクラスであるため、基本的には使用できません。 SwipeRefreshLayout
で進行状況円をレンダリングするために内部的に使用されますが、自分で膨らませることを意図したものではありません。
参照用に here を参照してください。
あなたがネイティブスタイルでそれをしたい場合は、このスニペットを使用してください
<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>
簡単な追加:ここで、最新のライブラリバージョン2.0.0
を2.2.0
に変更します
dependencies {
implementation 'de.hdodenhof:circleimageview:2.2.0'
}
これは私のために働いたものです
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"
/>
Javaコード:
CircleImageView pic = (de.hdodenhof.circleimageview.CircleImageView)rootView.findViewById(R.id.picid);
プロジェクトをリビルドするだけです
-Build ===> Clear Project
-Build ===> Rebuild Project
および機能しない場合
File ===> Invaildate Cahses/Restart
それから動作します
依存関係:
compile 'de.hdodenhof:circleimageview:2.0.0'
コード:
<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" />