Android 对动态创建的按钮的引用
我一直在寻找如何动态创建按钮。终于,我明白了。Android 对动态创建的按钮的引用,android,android-button,Android,Android Button,我一直在寻找如何动态创建按钮。终于,我明白了。 但是,我还不知道如何引用特定创建的按钮。 例如,在我下面的示例中,当单击某个按钮时,如何将其文本设置为红色 即如何放置其id: Button button_pulsado = (Button) findViewById(R.id.???????); Button.setTextColor(Color.RED); 这是我的例子: public class MainActivity extends AppCompatActivity { @
但是,我还不知道如何引用特定创建的按钮。
例如,在我下面的示例中,当单击某个按钮时,如何将其文本设置为红色 即如何放置其id:
Button button_pulsado = (Button) findViewById(R.id.???????);
Button.setTextColor(Color.RED);
这是我的例子:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<String> myList = new ArrayList<String>();
myList.add("A");
myList.add("B");
myList.add("C");
myList.add("D");
for (int i = 0; i < myList.size(); i++) {
Button myButton = new Button(this);
myButton.setText(myList.get(i));
LinearLayout ll = (LinearLayout) findViewById(R.id.layout1);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
}
}
}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List myList=new ArrayList();
myList.添加(“A”);
myList.添加(“B”);
myList.添加(“C”);
myList.添加(“D”);
对于(int i=0;i
要避开findViewById
问题,您可以存储列表
使用按钮。获取(int位置)
而不是findViewById
关于 例如,在我下面的示例中,当单击某个按钮时,如何将其文本设置为红色 将每个按钮添加到视图中时,可以在单独的单击侦听器中为其设置颜色
class ColorClickListener implements View.onClickListener {
private String color;
ColorClickListener(String color) {
this.color = color;
}
@Override
public void onClick(View v) {
// v.setBackground(color); // For example... API may not like this
}
}
从活动中
String [] colors = new String[] {"#fff", "#ccc"};
for (int i = 0; i < colors.length; i++) {
Button b = new Button(this);
b.setOnClickListener(new ColorClickListener(Color.parseColor(colors[i])));
}
String[]colors=新字符串[]{“#fff”,“#ccc”};
for(int i=0;i
无需调用findViewById()
。onClickMethod()
有一个View
参数,该参数引用了单击的视图:
private changeColorClick = new OnClickListener() {
@Override
public void onClick(View v) {
buttons.add(myButton);
v.setTextColor(Color.RED);
}
}
现在在您的循环中:
for (int i = 0; i < myList.size(); i++) {
Button myButton = new Button(this);
myButton.setTextColor(myList.get(i));
myButton.setOnClickListener(changeColorClick);
}
现在,您需要一个数组、List
或Map
的Color
对象,以便在构建OnClickListener
时使用。比如说,
Color[] colors = new Color[]{Color.RED, Color.GREEN, Color.BLUE};
for (int i = 0; i < myList.size(); i++) {
Button myButton = new Button(this);
myButton.setTextColor(myList.get(i));
myButton.setOnClickListener(new ColorClick(colors[i]);
}
Color[]colors=新颜色[]{Color.RED,Color.GREEN,Color.BLUE};
对于(int i=0;i
或者你可以在按钮上使用
setTag()
。改变文本颜色的方法在哪里?什么类和方法?你想改变哪个视图?点击的按钮?还是另一个视图?我想改变点击的按钮我不知道“buttons.get(int position)”的完整行是如何完成的是的,你能帮我吗?我不知道你想如何使用按钮。它只是一个ArrayList。它有一个get方法。你用你想要的按钮的位置来调用它。真的很简单吗?:button button1=(button)buttons.get(1)(R.id.buttons[1]);@FAR No.R.id.buttons
不是数组。另外,一行中的两组括号是无效语法,并且是编译器错误。@cricket\u 007 My bad=pThanks非常感谢。您的建议帮助我解决了问题。但是,现在出现了另一个问题:我不知道如何将按钮的文本恢复为原始颜色(黑色)当单击另一个按钮时。如果有人帮助我,我将不胜感激。@FAR作为将来的参考,您应该发布一个新问题。另外,请确保在延迟计时器启动后接受答案。
for (int i = 0; i < myList.size(); i++) {
Button myButton = new Button(this);
myButton.setTextColor(myList.get(i));
myButton.setOnClickListener(changeColorClick);
}
public ColorClick implements OnClickListener() {
private Color color;
public ColorClick(Color color) {
this.color = color;
}
}
Color[] colors = new Color[]{Color.RED, Color.GREEN, Color.BLUE};
for (int i = 0; i < myList.size(); i++) {
Button myButton = new Button(this);
myButton.setTextColor(myList.get(i));
myButton.setOnClickListener(new ColorClick(colors[i]);
}