我必须分层两个按钮。第一个(顶部)按钮是这样创建的,使用 .png 作为图标。
// create circular button and colorize
View button1 = v.findViewById(bId);
GradientDrawable backgroundGradient = (GradientDrawable)imgIcon.getBackground();
backgroundGradient.setColor(getResources().getColor(R.color.holo_gray_light));
// set icon
button1.setImageDrawable(getResources().getDrawable(R.drawable.ic_phone_ib));
对于第二个按钮(底部):
Button button2 = (Button) v.findViewById(R.id.textButton);
button2.setBackgroundResource(R.drawable.gray_rect);
我尝试过的:
1 将底部按钮的可绘制左侧设置为顶部按钮的可绘制。结果:仅显示图标而不显示背景色圆圈。
2 使用 ShapeDrawable 创建一个 RoundRectangle 然后创建 2 个图层并使用 LayerDrawable 设置按钮的背景:
int r= 20;
float[] outerR=new float[]{r,r,r,r,r,r,r,r};
RoundRectShape rr=new RoundRectShape(outerR,null,null);
ShapeDrawable drawable=new ShapeDrawable(rr);
drawable.getPaint().setColor(getResources().getColor(R.color.gray_189));
// get bitmap from button1
BitmapDrawable bm1 = (BitmapDrawable)button1.getDrawable();
// layer them
Drawable drawableArray[]= new Drawable[]{drawable, bm1};
LayerDrawable layerDraw = new LayerDrawable(drawableArray);
layerDraw.setLayerInset(1, 15, 15, 0, 0);//set offset of 2 layer
textButton.setBackground(layerDraw);
结果:与(1)相同。
这是期望的结果:
button1 是带有图标的蓝色按钮,button2 是带有文本的灰色圆角矩形。