1

我有一个 8x8 形式的 64 个切换按钮的网格。当应用程序运行时,它将每个切换按钮的背景/可绘制设置为一种颜色。这是在程序中完成的,而不是在 xml 中。我的问题是,虽然应用程序图形布局上的按钮之间似乎有空间,但当应用程序运行并将按钮更改为颜色时,空间消失了。这使得按钮看起来像一个单独的板,按钮之间没有定义。

我想要的是在按钮上加一个边框,以明确每个按钮的位置。

按钮的功能是用来指示正在按下的音符。按下按钮时,按钮的颜色会从灰色变为浅蓝色,并将音符添加到序列中。

因此,我需要能够在具有自定义设计的切换按钮上放置一个边框,该边框在激活/停用时会发生变化,从而使边框保持两种状态。我还尝试设置最大宽度和最大高度,并设置按钮上的填充以尝试将它们分开。

代码示例如下:

public class MainActivity extends Activity implements OnClickListener
{
    ToggleButton tg1;
    ....
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ....
        tg1 = (ToggleButton) findViewById(R.id.toggleButton1);
        tg1.setOnClickListener(this);
        ....
        tg1.setBackgroundColor(0xffcccccc); //set button grey
    }
    public void onClick(View v)
    {
        if((tg1.isChecked()))
        {

            tg1.setBackgroundColor(0xff00ffff);   //set button blue
        }
        else
        {

            tg1.setBackgroundColor(0xffcccccc); //set button grey
        }
    }
}

任何帮助是极大的赞赏。

4

1 回答 1

0

正确方法:不要手动调用 isChecked 来更改背景。使用选择器。您可以绘制带边框的 9-patch 或创建形状(使用描边设置边框颜色,使用实心设置填充颜色)。

或者创建一个自定义切换按钮来支持所需的功能。

于 2013-01-18T11:35:37.950 回答