0

所以我一直在尝试使用带有位图的画布来为游戏创建可点击图像的网格。它被做成一个 19 x 19 的板,它由可点击的图像组成,这样当你点击一个图像时,它就会变成一个新的图像。我试过这样做,我得到了图像网格,但我想不出一种让它们可点击的方法。我会显示代码,但实际上没有什么可显示的。它只是一个基本的自定义视图。也许我做错了,但我看到了一种有点相似的方法,但它不使用自定义图像。我可以添加一个 onTouchListener,然后我得到一个响应,但它仍然不能实现我想要完成的任务。我想我需要在我的自定义视图中创建按钮,但我需要通过图像自定义按钮,我无法弄清楚我将如何去做。这就是问题所在,如果有一种方法可以创建可自定义按钮网格的自定义视图。我该怎么做呢?对不起,如果这个问题看起来......很乱,但我已经为此工作了一段时间,并且变得非常困惑和迷失。在这一点上,任何帮助表示赞赏。

4

3 回答 3

0

是的,我想是的。不确定,但如果你使用带有图像视图的网格视图,你可以做你想做的事情。有关更多信息,请在此处查看:

http://developer.android.com/guide/topics/ui/layout/gridview.html

http://developer.android.com/reference/android/widget/ImageView.html

于 2013-07-29T23:28:29.060 回答
0

您可以只使用GridFragment并实现 onGridItemClick 方法来处理点击。这很简单。

于 2013-07-30T00:23:17.623 回答
0

如果你想要一个带有自定义背景图像按钮的gridview,我会这样做。

我会将所有可绘制对象存储在一个 int 数组中

int[] imageResource = new int[] {R.drawable.icon, R.drawable.icon2, R.drawable.icon3};

使用如下所示的适配器设置您的 gridView 并传递存储在数组中的可绘制对象

yourGridView.setAdapter(new GridAdapter(imageResource));

现在对于实际的内部类适配器

//create your own custom adapter for your gridView
public class GridAdapter extends BaseAdapter {


    int[] gridImages;

    public GridAdapter(int images[]){
          gridImages = images;
    }

    @Override
    public View getView(final int position, View convertView,
            ViewGroup parent) {

          LayoutInflater li = context.getLayoutInflater();
           if (convertView == null) {

               //here you inflate your xml containing a button.
               convertView = li.inflate(R.layout.grid_item, null);

           }
           //you reference the button contained in the inflated xml
           Button imageButton = (Button) convertView.findViewById(R.id.grid_button);

           //now you set the button with a drawable from your int array
           Drawable image = getResources().getDrawable(gridImages[position);


          // Now simply add your onClickListener and whatever else you need to achieve

          //return your view
          return convertView;
     }

     public int getCount() {
         return gridImages.length;
     }

     public Object getItem(int position) {
         return gridImages[position];
     }

     public long getItemId(int position) {
         return position;
     }
}

如果正确完成,这应该循环遍历 int 数组中引用的所有可绘制对象并将它们放在按钮上。

于 2013-07-30T05:02:39.060 回答