创建可点击的图像网格或自定义按钮

时间:2013-07-29 22:27:50

标签: android

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

3 个答案:

答案 0 :(得分:0)

是的,我想是的。不确定,但如果您使用带有图像视图的网格视图,您可以执行您想要完成的任务。有关更多信息,请点击此处:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

我会将所有drawable存储在一个int数组

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

使用下面显示的适配器设置gridView并传递存储在数组中的drawable

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数组中引用的所有drawable,并将它们放在按钮上。