2014-02-25 29 views
1

我开发了一个rss应用程序。我希望包含标题和图像的ListView具有带圆角的图像。我在线提供了示例代码,但问题是图像仍然是矩形。奇怪的部分是我有一个滑动菜单,当它切换时会将rs ListView推开,而它被推动的图像有圆角!当他们停止推动动画时,再次变成长方形。对我来说这是一个非常奇怪的问题,所以帮助? 四舍五入的图像类:带有圆角的ListView中的图像

public class RoundedImageView extends ImageView 
{ 
    private float radius = 20.0f; 

    public RoundedImageView(Context context) 
    { 
     super(context); 
    } 

    public RoundedImageView(Context context,AttributeSet attrs) 
    { 
     super(context,attrs); 
    } 

    public RoundedImageView(Context context,AttributeSet attrs,int defStyle) 
    { 
     super(context,attrs,defStyle); 
    } 

    @SuppressLint("DrawAllocation") 
    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     Path clipPath = new Path(); 
     RectF rect = new RectF(0,0,getWidth(), getHeight()); 
     clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW); 
     canvas.clipPath(clipPath); 
     super.onDraw(canvas); 
    } 
} 
+4

为什么ü这样做?创建一个圆角的XML并设置为您的imageview的背景。 –

+1

https://github.com/vinc3m1/RoundedImageView – naidu

回答

3

试试这个方法:创建rounded_corner.xml文件到drawable\rounded_corner.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 

<solid android:color="#101010" /> 

<stroke 
    android:width="1dp" 
    android:color="#808080" /> 

<corners android:radius="15dp" /> 

,并设置为BackgroundImageView

android:background="@drawable\rounded_corner" 

,还可以设置你的RSS图像0​​为Src或者像Bitmap一样:

imageview.setBitmap(yourrssimage); 
+0

我试过它仍然是不圆角的角落。奇怪的是,使用我公布的代码的代码是模拟器上的圆形,但是在我的笔记II中,它们不是。 – nick28

+0

更改XML文件中的半径并尝试。或发布您的所有布局和代码。你可能做错了什么。 –

+0

好吧我只注意到一些rss项目没有图像源,默认图像有圆角,但有图像源的是矩形。我使用setImageURI来设置图像源。如何将uri更改为位图以使用setBitmap方法? – nick28

0
使用

圆角图像或创建xml和设置为上ImageView的背景图像。

0

在您的可绘制文件夹中创建一个如下所示的XML。

button_back.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_enabled="false" 
    android:drawable="@color/grey"> 

    <shape> 
     <solid 
      android:color="#ef4444" /> 
     <stroke 
      android:width="1dp" 
      android:color="#992f2f" /> 
     <corners 
      android:radius="16dp" /> 
    </shape> 
</item> 

,然后应用到你的按钮,像这样。

<Button 
     android:text="@string/press_me" 
     android:layout_margin="12dp" 
     android:layout_width="fill_parent" 
     android:layout_height="30dp" 

     android:background="@drawable/button_back" 
/> 
0

创建一个行程,并列出它作为你imageview的背景

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="@android:color/transparent"/> 
    <stroke android:width="5dip" android:color="@android:color/transparent" /> 
    <corners android:radius="5dip"/> 
    <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" /> 
</shape> 

并在您的ImageView XML

android:background="@drawable/your_stroke_xml" 
+0

它适用于单个图像,而不是ListView中的图像。此外,现在,当我上下滚动时,屏幕顶部出现一个空白区域。 – nick28

+0

@ nick28我有类似的问题。你找到解决方案了吗? – Bresiu

+0

@Bresiu我发布在我的问题上的课程与我完全一致。问题是我使用调用MIUI的自定义ROM,我已经返回到CM ROM,并且类按预期工作:) – nick28