我一直在TableLayout中以编程方式放置几个ImageButton,每个ImageButton都有自己的Drawable资源作为Background。 我使用XML描述来处理ImageButton本身的布局,然后使用LayoutInflater来检索这样的ImageButton(称为genre_cell.xml):
<?xml version="1.0" encoding="utf-8"?>
<ImageButton
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/genreCellItemId" android:layout_weight="1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingLeft="5dip" android:paddingRight="5dip">
</ImageButton>
在我的班上,我做了:
myButton = (ImageButton) inflater.inflate(R.layout.genre_cell, row, false);
我实际上已经在每个ImageButton上附加了一个onClickListener,但是现在我想要唯一地识别单击了哪个ImageButton ... 我想也许我可以以某种方式检索用于背景的Drawable的ID并检查那个可用的Drawable的int值? 这是一个选项,如果是这样,应该如何实施? 还有其他选择吗?
答案 0 :(得分:1)
我偶然发现了一个博客,其中提到了ImageButton的setTag()和getTag()方法, 那些我可以使用的,因此我的问题得到了回答...... 链接到博客: http://jongladwin.blogspot.com/2010/03/androidsettag-and-gettag-usage-for.html
经过一番环顾,我甚至看到了setId()方法和getId()方法,所以看起来有几种方法可以识别出这样的ImageButton ......很高兴知道:P
答案 1 :(得分:1)
是的,你可以!
在res/values
文件夹中,创建一个xml文件button_ids.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<item type="id" name="image_button_one" />
<item type="id" name="image_button_two" />
...
</resources>
然后在你的充气电话之后:
myButton = (ImageButton) inflater.inflate(R.layout.genre_cell, row, false);
myButton.setId(R.id.image_button_one);
...
我实际上没有尝试过,但我认为这就是你应该这样做的。