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,它是按钮的基础,它的顺序是先可绘制,然后是文本。