我有26个不同的按钮,包含字母。我想要的是如果包含D,I,L的按钮应该显示图像按钮,如果点击任何其他按钮,则会发生其他事情。以下是我的尝试,但这似乎没有奏效。我知道onTouchKeyListener(),但它可能真的很大的编码。
imgD.setVisibility(View.INVISIBLE);
imgI.setVisibility(View.INVISIBLE);
imgL.setVisibility(View.INVISIBLE);
if(d.isPressed()) {
imgD.setVisibility(View.VISIBLE);
}
答案 0 :(得分:3)
您可以为每个按钮设置标签,然后将其用作从字符串到图像按钮的地图键。这样,您可以使用单击侦听器(或onClick
方法)轻松获取适当的图像。在代码中,您将使用setTag(Object)
方法。在XML中,您可以使用android:tag="value"
属性。
Map<Object, ImageButton> buttonMap = new HashMap<Object, ImageButton>();
// initialize the map
// later:
public void onClick(View v) {
ImageButton btn = buttonMap.get(v.getTag());
if (btn != null) {
btn.setVisibility(View.VISIBLE);
}
}
您可以设置按钮标签和图片按钮标签,而不是Map
,并使用findViewWithTag()
查找与所点击按钮对应的图片按钮。
public void onClick(View v) {
View btn = findViewWithTag("img" + v.getTag());
if (btn != null) {
btn.setVisibility(View.VISIBLE);
}
}
答案 1 :(得分:1)
如果你把按钮放在你的xml文件中,把android:onclick属性放在所有按钮中并链接到同一个函数:
android:onclick="myButtonOnClick"
然后在你的java代码中,即包含这些按钮的活动
public void myButtonOnClick(View v){
switch(v.getId()){
}
// put your logic here.
}
答案 2 :(得分:0)
我建议使用onTouchKeyListener()和switch语句。
答案 3 :(得分:0)
一种方法是在xml中为每个按钮添加相同的功能
android:onClick="someFunction"
然后在Java
public void someFunction(View v)
{
TextView tv = (TextView)v; // cast the View clicked to a Button
String text = v.getText().toString(); // get the text of the Button
if ("D".equals(text) || "I".equals(text) || "L".equals(text)) // See if it matches
{
imgD.setVisibility(View.VISIBLE);
imgI.setVisibility(View.VISIBLE);
imgL.setVisibility(View.VISIBLE);
}
}