【问题标题】:color of clicked button show over given multiple button in android单击按钮的颜色显示在android中给定的多个按钮上
【发布时间】:2015-12-06 06:19:17
【问题描述】:

我正在开发一个 Android 应用程序。

我想在屏幕顶部水平放置 3 个按钮,就像选项卡视图一样。

对于这3个按钮,点击按钮的颜色应该是red,其余按钮的颜色都是默认状态。

例如:

当用户点击一个按钮时,点击按钮的颜色应该变成red

当用户点击另一个按钮时,被点击按钮的颜色应变为red,前一个按钮的颜色应返回default state,就像每个按钮相互依赖一样。

【问题讨论】:

  • 你的 xml 中有按钮还是从代码中添加按钮

标签: android button android-linearlayout


【解决方案1】:

不要使用这个解决方案! Android 提供了另一种完美且干净的方式。

你应该像这样创建一个 select(xml 文件):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:background="@color/you_color" />
</selector>

然后在你的按钮中这样做

<android:background="@drawable/your_selector">

【讨论】:

    【解决方案2】:

    你可以这样试试

        btn1.setOnClickListener(this);
        btn1.setOnClickListener(this);
        btn1.setOnClickListener(this);
        btn1.setOnClickListener(this);
    
    
    @Override
    public void onClick(View v) {
    
        switch (v.getId()) {
    
        case R.id.btn_1:
            btn_1.setBackgroundResource(R.color.selected_color);
            btn_2.setBackgroundResource(R.color.default_color);
            btn_3.setBackgroundResource(R.color.default_color);
            btn_4.setBackgroundResource(R.color.default_color);
            break;
        case R.id.btn_2:
            btn_2.setBackgroundResource(R.color.selected_color);
            btn_1.setBackgroundResource(R.color.default_color);
            btn_3.setBackgroundResource(R.color.default_color);
            btn_4.setBackgroundResource(R.color.default_color);
            break;
        case R.id.btn_3:
            btn_3.setBackgroundResource(R.color.selected_color);
            btn_2.setBackgroundResource(R.color.default_color);
            btn_1.setBackgroundResource(R.color.default_color);
            btn_4.setBackgroundResource(R.color.default_color);
            break;
        case R.id.btn_4:
            btn_4.setBackgroundResource(R.color.selected_color);
            btn_2.setBackgroundResource(R.color.default_color);
            btn_3.setBackgroundResource(R.color.default_color);
            btn_1.setBackgroundResource(R.color.default_color);
            break;
    
        default:
            break;
        }
    
    }
    

    【讨论】:

    • @devendra 如果我的解决方案适合您,请接受我的回答。
    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 2015-01-26
    • 2014-01-23
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多