如何处理表格布局的每个单元格上的点击事件
Posted
技术标签:
【中文标题】如何处理表格布局的每个单元格上的点击事件【英文标题】:how to handle click event on each cell of a table layout 【发布时间】:2011-09-28 14:50:44 【问题描述】:我有一个像this one 一样简单的表格布局。
我需要的是允许最终用户单击表格的每个单元格,并对每个单元格执行某些操作。
但是,android table layout似乎只支持基于click事件的row,不支持基于click事件的cell。如何摆脱这个?
【问题讨论】:
【参考方案1】:您需要在 XML 布局定义文件中使用 android:clickable="true"
和 android:onClick="clickHandlerCell"
处理点击事件,在我的例子中是 LinearLayout。
要识别单击了哪个单元格,您可以在创建每个单元格时使用view.setTag(uniqueID)
标记每个单元格的视图。在 clickHandlerCell 函数中使用view.getTag()
来获取您的单元格的身份。
【讨论】:
如果我在 clickHanderCell 函数中使用view.getTag()
,它只会返回表格的标签而不是单元格。如何获取单元格的标签?
@Oli,不,它返回一个单元格标签。当您在 TableRow 中创建 TextView 时,您可以编写:textView.setTag(10)
。然后创建一个监听器:textView.setOnClickListener(...);
。在里面你可以用int i = (int) v.getTag()
收到那10个。【参考方案2】:
试试这个代码点击特定的表格行:
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);
);
【讨论】:
那个 row_id 并不能帮助 OP 确定该行上的哪个单元格被点击了。以上是关于如何处理表格布局的每个单元格上的点击事件的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 Windows 应用程序中的 SecondaryTile 点击事件