0

我正在尝试制作自己的自定义视图,目前它所做的只是在特定的 x 和 y 坐标上绘制图像,然后在不同的位置重复绘制相似的图像。

我希望能够在绘制的每个图像实例上创建一个按钮。如果单击一个图像,它将导致发生不同的事情,具体取决于选择的图像。

我该如何实施?

我是否必须为每个图像/按钮组合创建不同的视图,然后设置 onClick 事件?


让我试着更清楚一点我正在尝试使用六边形制作地图(不同类型的地形适合不同的玩家)我已经想出了如何让他们绘制(见这里- 他们将有一个边框显示谁拥有什么地形)

我刚刚制作了一个自定义视图类,并使用 Canvas 绘制了六边形;但是,我不确定如何将六边形制作成按钮,以便区分选择了哪个六边形以及它应该如何对对手的位置做出反应。

我正在考虑创建一个名为 Terrain 的 ViewGroup 来包含属于玩家的节点(六边形),并拥有一组节点视图,这些节点视图只在它应该位于的位置绘制六边形。

问题是如果按下某个六边形,我可以将每个节点或整个 viewGroup 变成一个按钮(或做一个 onTouch )吗?

4

2 回答 2

1

如果我理解得很好,你应该这样做:

  • 一个模板 my_pictures.xml,它是一个简单的按钮。
  • 然后您创建一个自定义适配器,作为您想要创建的每种图像的功能。我的意思是,您必须根据需要更改按钮的背景值。然后你做一个notifyDataSetChanged(); 使用新按钮刷新容器。
  • 对于侦听器,您只需在创建 buttonImages 时将其添加到您的活动或适配器中,我不知道什么更好。
于 2012-03-08T06:55:14.817 回答
0

谢谢你的帮助!

我想出了我需要做什么。我有一个 NodeView 类,在我的 GameActivity 类中,我使用相对布局并设置我想要放置的位置的布局参数

    RelativeLayout rl = new RelativeLayout(this);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(95,95);
    params.leftMargin = 10;
    params.topMargin = 10;


    params = new RelativeLayout.LayoutParams(95,95);
    params.leftMargin = 10+95*x;
    params.topMargin = 81+(71*y);
    rl.addView(new NodeView (this,0,0,1,1), params);

这帮助我在需要的地方添加了东西,现在我试图弄清楚如何在 x 和 y 轴上滚动区域(我尝试了 ScrollView,但这只允许我在 y 轴上滚动,我我正在调查它)

于 2012-03-11T06:14:34.893 回答