2013-10-31 63 views
1

我有我的活動按鈕,它有一個背景圖像also.I增加了選擇的屬性,它正在爲set_pressed和set_focused.But圓角在默認情況下不來按鈕的狀態下,我已插入背景圖片also.pls幫我...圓角不工作的時候按鈕有背景圖像

activity_sam.xml

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

    <item android:state_pressed="true"> 
    <shape > 

    <solid android:color="#f27d0f"/> 
    <corners android:radius="7dp"/> 
    </shape> 
    </item> 

    <item android:state_focused="true"> 
    <shape > 

    <solid android:color="#f27d0f"/> 
    <corners android:radius="7dp"/> 
    </shape> 
    </item> 

    <item android:state_focused="false" 
     android:state_enabled="true" 
     android:drawable="@drawable/sam_logo" > 
    <shape >  
    <corners android:radius="7dp"/> 
    </shape> 
    </item> 

</selector> 

回答

0

添加這最後一個項目下面。

<item> 
    <shape>  
    <corners android:radius="7dp"/> 
    </shape> 
    </item> 

它將作爲按鈕的默認樣式。

+0

我不認爲這會有所幫助。問題不在於圓角本身,而在於帶有背景圖像的圓角。 –

+0

哦!好的。然後他需要使用代碼來裁剪圖像以使其四捨五入。 – Tejas

0

添加其他項目顯示的默認狀態是這樣的:

<shape>  
<corners android:radius="7dp"/> 
</shape> 

如果你想顯示圓角編程做到以下幾點:

public Drawable getRoundedBitmap(Bitmap bitmap, float Rnd_px) { 

    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), 
      bitmap.getHeight(), Config.ARGB_8888); 
    Canvas canvas = new Canvas(output); 

    final int color = 0xff151515; 
    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
    final RectF rectF = new RectF(rect); 
    final float roundPx = Rnd_px; 

    paint.setAlpha(50); 
    paint.setAntiAlias(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(color); 
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 
    Drawable image = new BitmapDrawable(output); 
    return image; 
} 

上面的代碼將裁剪邊緣的形象。如果你想在圖像視圖上顯示一個圓形圖層。請執行以下操作。

<?xml version="1.0" encoding="UTF-8"?> 

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

<stroke 
    android:width="3dp" 
    android:color="#0000CC" /> 

<corners 
    android:bottomLeftRadius="5dp" 
    android:bottomRightRadius="5dp" 
    android:topLeftRadius="5dp" 
    android:topRightRadius="5dp" /> 

<padding 
    android:bottom="6dp" 
    android:left="6dp" 
    android:right="6dp" 
    android:top="6dp" /> 

0

我寧願嘗試代碼是這樣的(未選中尚):

public class MyDrawable extends PaintDrawable { 
    BitmapShader mShader; 
Rect mRect = new Rect(); 
     public MyDrawable(BitmapDrawable bitmapDrawable) { 
     super(); 


     final BitmapShader mShader = new BitmapShader(bitmapDrawable.getBitmap(), bitmapDrawable.getTileModeX() == null ? Shader.TileMode.CLAMP : bitmapDrawable.getTileModeX(), bitmapDrawable.getTileModeY() == null ? Shader.TileMode.CLAMP : bitmapDrawable.getTileModeY()); 
     mPaint = new Paint(); 
     mPaint.setAntiAlias(true); 
     mPaint.setFilterBitmap(true); 
     mPaint.setDither(true); 
     mPaint.setStyle(Paint.Style.FILL); 
     mPaint.setShader(mShader); 
    } 


    @Override 
    public void draw(Canvas canvas) { 
     int saveCount = canvas.getSaveCount(); 
     canvas.save(); 
     getPadding(mRect); 
     canvas.translate(mRect.left, mRect.top); 
     getShape().draw(canvas, mPaint); 
     canvas.translate(-mRect.left, -mRect.top); 
     canvas.restoreToCount(saveCount); 

    } 


} 

由於這一點,你可以使用MyDrawable.setCornerRadii(浮[]半徑),並且由於在矩形這個抽籤的圖像與4個不同勢半徑(左上,右上,左下,底部-RO GHT)

3
  • 添加布局按鈕的大小相同

  • 提供背景圖片,並設置圓角落XML作爲背景,按鈕..如果它的工作接受的答案。


<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/ic_launcher" 
    android:orientation="vertical" > 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/top_right_left_coner" 
     android:text="@string/hello_world" /> 
</LinearLayout> 

<?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="1dp" 
     android:color="@android:color/black" /> 

    <padding 
     android:bottom="1dp" 
     android:left="1dp" 
     android:right="1dp" 
     android:top="1dp" /> 

    <corners 
     android:bottomLeftRadius="10dip" 
     android:bottomRightRadius="10dip" 
     android:topLeftRadius="10dip" 
     android:topRightRadius="10dip" />   
</shape>