【发布时间】:2011-09-28 14:50:44
【问题描述】:
我有一个像this one 一样简单的表格布局。
我需要的是允许最终用户单击表格的每个单元格,并对每个单元格执行某些操作。
但是,android table layout似乎只支持基于click事件的row,不支持基于click事件的cell。如何摆脱这个?
【问题讨论】:
标签: android android-layout android-emulator android-widget
我有一个像this one 一样简单的表格布局。
我需要的是允许最终用户单击表格的每个单元格,并对每个单元格执行某些操作。
但是,android table layout似乎只支持基于click事件的row,不支持基于click事件的cell。如何摆脱这个?
【问题讨论】:
标签: android android-layout android-emulator android-widget
您需要在 XML 布局定义文件中使用 android:clickable="true" 和 android:onClick="clickHandlerCell" 处理点击事件,在我的例子中是 LinearLayout。
要识别单击了哪个单元格,您可以在创建每个单元格时使用view.setTag(uniqueID) 标记每个单元格的视图。在 clickHandlerCell 函数中使用view.getTag() 来获取您的单元格的身份。
【讨论】:
view.getTag(),它只会返回表格的标签而不是单元格。如何获取单元格的标签?
textView.setTag(10)。然后创建一个监听器:textView.setOnClickListener(...); 。在里面你可以用int i = (int) v.getTag()收到那10个。
试试这个代码点击特定的表格行:
TableLayout contact_table = (TableLayout)findViewById(R.id.contact_table);
final View row=contact_table.getChildAt(i);
row.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
// TODO Auto-generated method stub
row_id=contact_table.indexOfChild(row);
}
});
【讨论】: