2013-01-17 76 views
1

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

我想要的是在按钮上放一个边框,以清楚每个按钮的位置。

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

所以我需要能够在自定义设计的切换按钮上放置一个边框,该按钮在启用/停用时会发生更改,并保持边框处于两种状态。我也尝试设置最大宽度和最大高度,并在按钮上设置填充以试图分离它们。

的代码的示例如下:

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 
     } 
    } 
} 

任何帮助感激。

+0

为什么不用边框创建9patch图像? – Leonidos

+0

我以前试过使用9个补丁图像,但他们不会为我工作。同样在一分钟内,我正在使用颜色,而不是图像,并且如果可能的话宁愿保持这种方式。 – user1988170

回答

0

正确的方法:不要手动调用isChecked来更改背景。使用选择器。您可以使用边框绘制9修补程序或创建shape(使用描边设置边框颜色和实心以设置填充颜色)。

或者创建一个自定义的togglebutton来支持所需的功能。