我在 Android 中使用 64 个按钮设计了一个棋盘。但是在设计之后,我遇到了很多问题,因为我需要实现 64 个 OnClickListeners。有没有其他方法可以使用for
循环实现 OnClickListener,或者使用按钮设计棋盘是不正确的?
3 回答
您应该查看开发人员示例,尤其是井字游戏应用程序,它使用基于网格的游戏板的自定义视图。你应该能够扩展这个想法。
如果您想继续为每个方块使用按钮,您必须知道它们的 id 才能创建onClickListener
s。有两种方法可以解决这个问题;
在布局 xml 中添加 onClickListener:
<Button
parameters...
onClick="myOnClick"
</
然后,您可以在您Activity
的方法中创建 myOnClick 方法:
public void myOnClick(View clickedView){
//code
}
按钮解决方案的一种可能更好的方法是从代码中创建它们,或者获取LayoutInflater
并创建您的 xml 按钮并添加到您当前的内容中,或者使用相应的 java 类创建新按钮:Button myButton e3 = new Button(context);
如果你真的想要有 64 个独立的视图,你不需要 64 个独立的 onClickListener;只需在 XML 中为视图提供一个 onClick 属性,所有这些都与关联活动的相同方法有关。然后,您可以在构建时生成一个表以将 id 映射到坐标,或者您可以使用您自己的属性将坐标添加到每个视图。
但是,为您的棋盘提供单一视图会更有意义。此视图会将自身划分为 64 个方格,维护一个内部表格,指示哪些棋子在哪里,绘制方格和其中的棋子.onDraw()
,并在单击时进行一些数学运算以确定单击了哪个方格。TileView.java
在示例Snake 应用程序中学习;一旦您理解了该代码,您将在ChessboardView
课堂上轻松自如。
是的,可以遍历按钮并为每个按钮添加一个侦听器。在您的循环中,您将执行以下操作:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Handle click events...
}
});