在我基于数据库值的项目中,我正在动态创建按钮。现在通过按一个按钮,我突出显示该按钮。如果我按下另一个按钮则会突出显示该按钮将突出显示,并且第一个按下的按钮将被取消突出显示
我的问题是:总是按下按钮会突出显示,直到按下另一个按钮。
for (int i = 0; i < arr.length; i++) {
final Button b = new Button(this);
b.setWidth(80);
b.setId(i + 1);
b.setText("M" + arr[i]);
ll.addView(b);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
b.setBackgroundColor(R.drawable.buttonbtn);
String str = b.getText().toString().substring(1);
Constant.diametervalue = str;
f1 = l.indexOf(Constant.diametervalue);
f2 = l.size();Log.e("","f1 value--"+f2);
Constant.length = f2;
InnerList adapter11 = new InnerList(this, str);
adapter11.getCount();
gallery.setAdapter(adapter11);
}
}
按下我的代码,按下一个按钮就会突出显示。如果我先按第二个按钮,第二个按钮突出显示,则按下。
答案 0 :(得分:1)
按钮元素仅具有状态按下状态。在复选框中,有一个状态称为状态检查。您可以使用按钮图像创建一个复选框。
答案 1 :(得分:0)
我认为您需要使用复选框,而不是正常的按钮视图。如果这不清楚我可以为你制作一些代码..但基本上你会使用复选框并更改样式以同意你想要显示..在这种情况下,你将能够突出显示(检查),当点击其他按钮(复选框)如果您在组中使用它们,第一次检查将会消失
=======添加代码=======
我们去找我的朋友:
on mainactivity:
import android.app.Activity;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class HighListButtonActivity extends Activity implements OnCheckedChangeListener {
private CheckBox b1,b2,b3;
private int selectedChId=-1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(CheckBox)findViewById(R.id.ck1);
b2=(CheckBox)findViewById(R.id.ck2);
b3=(CheckBox)findViewById(R.id.ck3);
b1.setOnCheckedChangeListener(this);
b2.setOnCheckedChangeListener(this);
b3.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// here just to follow the checkbox which is checked to uncheck it later when other checkbox is checked..
if(selectedChId==-1){
selectedChId=buttonView.getId();
}else if(selectedChId==buttonView.getId()){
selectedChId=-1;
}else{
((CheckBox)findViewById(selectedChId)).setChecked(false);
selectedChId=buttonView.getId();
}
//make your logic here......
}
}
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bt1"
android:button="@drawable/hlor"
android:background="@drawable/hlor"
android:id="@+id/ck1"
/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bt2"
android:button="@drawable/hlor"
android:background="@drawable/hlor"
android:id="@+id/ck2"
/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="bt3"
android:button="@drawable/hlor"
android:background="@drawable/hlor"
android:id="@+id/ck3"
/>
</LinearLayout>
hlor.xml(作为选择器样式):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/hlord" />
<item android:state_checked="false" android:drawable="@drawable/hlornd" />
</selector>
hlord.xml(已检查样式可绘制):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<android:solid android:color="#FF555555"/>
</shape>
</item>
</layer-list>
hlornd.xml(作为未经检查的样式可绘制):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<android:solid android:color="#FF000000"/>
</shape>
</item>
</layer-list>
突出显示改变hlornd / hlord样式的颜色
祝你好运......答案 2 :(得分:0)
试试这个:
假设选择Button1和Button2两个按钮。
并为2个按钮创建四个drawable:
示例:普通图像:buttonone_normal,buttontwo_normal。
选择的图像:buttonone_selected,buttontwo_selected
and onClickListeners put something like this:
buttonone.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
buttonone.setImageResource(R.drawable.buttonone_selected)
buttontwo.setImageResource(R.drawable.buttontwo_normal)
}
buttontwo.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
buttonone.setImageResource(R.drawable.buttonone_normal)
buttontwo.setImageResource(R.drawable.buttontwo_selected)
}