繁体   English   中英

在Java中切换按钮可绘制内容和文本的颜色

[英]Toggling the color of a button's drawable and text in java

我需要一个Button或TextView,当单击它以显示是否打开时,它会更改其CompoundDrawable(顶部)和Text的颜色。

  1. 它必须是一个Button或TextView
  2. 每个按钮只能有1个可绘制资源
  3. 文字颜色需要改变
  4. Drawable顶部颜色需要更改,而不是用其他可绘制对象替换
  5. 视图的背景需要保持透明
  6. 按钮的状态需要保存

我尝试了不同的方法,但我认为最好的方法是创建一个扩展Button或TextView的新Java文件。 我在想这样的事情:

public class CustomButton extends android.support.v7.widget.AppCompatButton {

    int colorOn;
    int colorOff;
    boolean isOn = false;

    public CustomButton(Context context) {
        super(context);
    }

    public CustomButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    private void onButtonClicked(){

        if(isOn){
            setCompoundDrawablesColors(colorOn);
            setTextColor(colorOn);
        } else {

            setCompoundDrawablesColors(colorOff);
            setTextColor(colorOff);
        }

        isOn = !isOn;
    }
}

我的问题是:

  • 在哪里插入onButtonClicked? 的onTouchEvent? onPressed? onFocused? 实现OnClickListener?
  • 如何更改Drawable的颜色,使其立即更新UI? 我知道更改颜色是通过setCompoundDrawablesTint(color,mode)完成的。 会尽快更新UI吗? 我一直无法使它正常工作。
  • 没有任何XML代码该怎么办?

实际上,您可以自定义绘制自己的视图,可以通过dispatchTouchEvent(MotionEvent事件)来侦听键状态调用OnClickListener,这将更容易实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM