【发布时间】:2014-11-11 20:47:50
【问题描述】:
我通过输入一个词来动态创建Buttons。如果我写 "met",它会出现在屏幕上 - 每个字母一个 Button。我输入的下一个单词也会发生同样的事情,它会出现在前一个单词的下方 --- 如上图所示。
当我点击Button 时,它会变成绿色。我的问题是,禁用单击Buttons 行的最佳方法是什么。意思是,如果用户点击"met"中的'm',我希望用户只能点击"met"中的Buttons,而不能点击@中的任何Buttons 987654332@
这是我的代码:
编辑
int size = enter_txt.getText().toString().length();
for (int i=0; i<size; i++){
final Button dynamicButtons = new Button(view.getContext());
dynamicButtons.setLayoutParams(rlp);
dynamicButtons.getLayoutParams().width = 130;
dynamicButtons.getLayoutParams().height = 130;
dynamicButtons.setTag("0");
dynamicButtons.setId(1);
dynamicButtons.setText(edit_text_array[i]);
dynamicButtons.setBackgroundResource(R.drawable.button);
button_list.add(dynamicButtons);
linearLayout2.addView(dynamicButtons, rlp);
dynamicButtons.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
int i=0;
LinearLayout ll = (LinearLayout) dynamicButtons.getParent();
for(i=0; i<list_of_ll.size();i++){
if (ll == list_of_ll.get(i)){
list_of_ll.get(i).setId(i);
break;
}
}
if(list_of_ll.get(i).getId()==i)
ButtonOnClick(view);
}
});
}
linearLayout2.setId(0);
linearLayout2.setTag("0");
list_of_ll.add(linearLayout2);
编辑
我为Buttons 的每一行创建了LinearLayouts 中的List。如果LinearLayout 的id 设置为1,则Buttons 变为绿色。当我单击Button 时,我希望LinearLayout 保持在1 并将所有其他行/LinearLayouts 设置为0 所以它们变得不可点击。
目前,我点击的每个Button 都会变成绿色,即使它位于不同的行中。有人可以帮我解决这个问题吗?
【问题讨论】:
-
为什么不将 onclicklistener 设置为 null 对于那些你不想拥有功能的人?
-
这是个好主意。但是所有按钮都具有相同的 onClickListener。如何区分我想要和不想要的按钮?
-
你应该命名你的行,你现在无法区分它们。
-
或者你应该让你的按钮成为一个数组,这样它们就可以有不同的点击监听器
-
每一行按钮当前都保存在一个LinearLayout List中。但我仍然难以解决...请检查我上面的代码
标签: android button android-linearlayout