是否可以修改textview的z-order和Button中的drawable?

时间:2018-02-05 13:56:52

标签: android button layout

我创建了自定义按钮,它扩展了复合按钮,但是textview位于按钮的drawable后面。我希望Button的文本应该出现并且drawable应该在后面而不在布局中创建其他视图。

有可能实现这个目标吗?

任何链接或示例代码都有很大帮助。

1 个答案:

答案 0 :(得分:0)

CompoundButton是一个抽象类,主要用于从CheckboxSwitch等SDK创建其他视图,它有自己的局限性和特定行为。

有更多方法可以更轻松地实现它,并且没有CompoundButton依赖。

1。创建自己的ViewGroup并将子项用作图层。有方法可以更改z-orderview.bringToFrontgroup.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);
    }

}

2。另一个选项是切换视图的可见性:view.setVisibility(View.VISIBLE)也在ViewGroup

3。最后一个是使用Canvas“手动”绘制它。这可能是最灵活的方式。还具有更好的性能,并为您提供添加自定义动画的机会。

public void onDraw(Canvas canvas){
    canvas.drawRect(rect);//bottom layer
    canvas.drawText(text);//mid layer
    canvas.drawLine(line);//top layer
}