Android 是否可以修改textview和drawable in按钮的z顺序?
我创建了自定义按钮,它扩展了复合按钮,但是文本视图在按钮的可绘制部分后面。我希望按钮的文本应该出现,可绘制的应该在布局中不创建其他视图 有可能做到这一点吗Android 是否可以修改textview和drawable in按钮的z顺序?,android,button,layout,Android,Button,Layout,我创建了自定义按钮,它扩展了复合按钮,但是文本视图在按钮的可绘制部分后面。我希望按钮的文本应该出现,可绘制的应该在布局中不创建其他视图 有可能做到这一点吗 任何链接或示例代码都有很大帮助。CompoundButton是一个抽象类,主要用于从SDK创建其他视图,如Checkbox或Switch,它有自己的限制和特定行为 有不同的方法可以更容易地实现它,而且不需要依赖项 一,。创建自己的视图组,并将子对象用作图层。有一些方法可以更改z顺序:view.bringToFront和group.bringC
任何链接或示例代码都有很大帮助。
CompoundButton
是一个抽象类,主要用于从SDK创建其他视图,如Checkbox
或Switch
,它有自己的限制和特定行为
有不同的方法可以更容易地实现它,而且不需要依赖项
一,。创建自己的视图组
,并将子对象用作图层。有一些方法可以更改z顺序
:view.bringToFront
和group.bringChildToFront
。这个类每秒旋转三层
static class LayeredButton extends RelativeLayout {
public LayeredButton(Context context) {
super(context);
Button buttonA = new Button(context);
Button buttonB = new Button(context);
Button buttonC = new Button(context);
buttonA.setText("a");
buttonB.setText("b");
buttonC.setText("c");
addView(buttonC);
addView(buttonB);
addView(buttonA);
rotateChildren();
}
void rotateChildren(){
postDelayed(new Runnable() {
@Override
public void run() {
getChildAt(0).bringToFront();
rotateChildren();
}
}, 1000);
}
}
二,。另一个选项是切换视图的可见性:view.setVisibility(view.VISIBLE)
也在ViewGroup内部
三,。最后一个是使用Canvas
手动绘制。这可能是最灵活的方法。也有更好的性能,让您有机会添加自定义动画
public void onDraw(Canvas canvas){
canvas.drawRect(rect);//bottom layer
canvas.drawText(text);//mid layer
canvas.drawLine(line);//top layer
}
谢谢你的回复。第一个选项间接地告诉我们,这可以通过多个视图实现。第三个选项是单一视图中的选项,可以实现这一点。关键是要有秩序。我检查了TextView,它是按钮的基础,它的顺序是先可绘制,然后是文本。