【问题标题】:Rounded ImageView not getting displayed properly圆形 ImageView 无法正确显示
【发布时间】:2017-05-25 04:58:47
【问题描述】:

我正在尝试制作圆形图像视图,但我得到了不正确的输出。我附上照片

这些是用于此的 xml 文件

circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="1.9"
android:useLevel="false" >
<solid android:color="@android:color/transparent" />

<stroke
    android:width="10dp"
    android:color="@android:color/white" />
</shape>

img.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:drawable="@drawable/circle"/>
<item android:drawable="@drawable/ic_add_photo"/>

</layer-list>

这个的图像视图是:

<ImageView
    android:id="@+id/iv_dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/iv_person"
    android:layout_below="@+id/iv_person"
    android:layout_marginTop="37dp"
    android:adjustViewBounds="true"
    android:background="@drawable/img"
    android:cropToPadding="true" />

【问题讨论】:

标签: android android-layout android-imageview


【解决方案1】:

您可以使用CirlcleImageView 库对ImageView 进行四舍五入:

编译这个库

 compile 'de.hdodenhof:circleimageview:2.2.0'

用法

<de.hdodenhof.circleimageview.CircleImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/profile_image"
    android:layout_width="96dp"
    android:layout_height="96dp"
    android:src="@drawable/profile"
    app:civ_border_width="2dp"
    app:civ_border_color="#FF000000"/>

更多信息follow this link

【讨论】:

    【解决方案2】:

    你可以像使用外部库

    dependencies {
        ...
        compile 'de.hdodenhof:circleimageview:2.1.0'
    }
    
    <de.hdodenhof.circleimageview.CircleImageView
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/profile_image"
        android:layout_width="96dp"
        android:layout_height="96dp"
        android:src="@drawable/profile"
        app:civ_border_width="2dp"
        app:civ_border_color="#FF000000"/>
    

    或者使用自定义作为

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

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

    【讨论】:

      【解决方案3】:

      试试这个

        you can use 'Glide'
      
        compile 'com.github.bumptech.glide:glide:3.7.0'
      
        basically it is a network library but you can also use this for circular imageView and gif it have a very good memory management
      
      
        ImageView img=(ImageView)findViewById(R.id.img_test);
      
         Glide.with(this).load("your image path").asBitmap().placeholder(R.drawable.logo_bk).centerCrop().into(new BitmapImageViewTarget(img) {
              @Override
              protected void setResource(Bitmap resource) {
                  RoundedBitmapDrawable circularBitmapDrawable =
                          RoundedBitmapDrawableFactory.create(this.getResources(), resource);
                  circularBitmapDrawable.setCircular(true);
                  img.setImageDrawable(circularBitmapDrawable);
              }
          });
      

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多