我有26个不同的包含字母的按钮。在其中,如果包含D,I,L的按钮应该显示图像按钮,如果单击任何其他按钮,则会发生其他事情。以下是我尝试过的,但似乎不起作用。我知道onTouchKeyListener(),但它可能真的需要大量的编码。
imgD.setVisibility(View.INVISIBLE);
imgI.setVisibility(View.INVISIBLE);
imgL.setVisibility(View.INVISIBLE);
if(d.isPressed()) {
imgD.setVisibility(View.VISIBLE);
}
您可以为每个按钮设置一个标记,然后将其用作从字符串到图像按钮的映射中的键。通过这种方式,您可以使用单击侦听器(或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);
}
}
如果您将按钮放在xml文件中,请将android:onclick属性放在所有按钮中,并链接到相同的函数:
android:onclick="myButtonOnClick"
然后在您的java代码中,即包含这些按钮的活动中,
public void myButtonOnClick(View v){
switch(v.getId()){
}
// put your logic here.
}
我建议将onTouchKeyListener()与switch语句一起使用。
一种方法是为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);
}
}