android.support.v4.widget.CircleImageView werkt niet

wanneer ik probeer te gebruiken:
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" />

mijn app crasht

hoe de nieuwe Material Design Widget CircleImageView te ondersteunen

is er een voorbeeld van het gebruik van deze nieuwe 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

Antwoord 1, autoriteit 100%

De CircleImageViewis een privéklasse van de ondersteuningsbibliotheek en kan niet worden gebruikt. Maar het is gemakkelijk om dit effect zelf te creëren zonder de CircleImageView. Je hoeft alleen maar een <shape />te definiëren die kan worden getekend met een transparante cirkel in het midden, vergelijkbaar met deze:

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

Vervolgens combineer je gewoon de afbeelding die je wilt weergeven in de ImageViewmet de <shape />die je van boven kunt tekenen in een LayerListzoals dit:

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

Als de afbeelding die u wilt weergeven dynamisch is, kunt u de LayerListprogrammatisch maken!


Antwoord 2, autoriteit 87%

Ik heb een vervanging gevonden voor 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" />

Bibliotheeklink: https://github.com/hdodenhof/CircleImageView


Antwoord 3, autoriteit 35%

CircleImageViewis een privéklasse van v4, dus je kunt het in principe niet gebruiken. Het wordt intern gebruikt om de voortgangscirkel in een SwipeRefreshLayoutweer te geven, maar is niet bedoeld om zelf op te blazen.

Zie hierter referentie.


Antwoord 4, autoriteit 18%

Als je het in een native stijl wilt doen, gebruik dan dit fragment

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

Antwoord 5, autoriteit 9%

Dit is wat voor mij werkte

xml-indeling:

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

Antwoord 6, autoriteit 9%

Eenvoudig toevoegen: hier de nieuwste bibliotheekversie 2.0.0wijzigen in 2.2.0

dependencies {
 implementation 'de.hdodenhof:circleimageview:2.2.0'
}

Antwoord 7, autoriteit 5%

Bouw het project gewoon opnieuw op

  • Bouw ===> Project wissen
  • Bouw ===> Project herbouwen

en zo niet werkt
Bestand ===> Cahses ongeldig maken /

opnieuw starten

Dan zal het werken.


Antwoord 8, autoriteit 2%

afhankelijkheid:

compile 'de.hdodenhof:circleimageview:2.0.0'

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

Other episodes