Android 创建自定义网格板(如棋盘游戏中所示)

Android 创建自定义网格板(如棋盘游戏中所示),android,Android,我对Android GUI设计非常陌生。我正在尝试创建一个板,如下所示。单元格可以有不同的颜色,并且应该可以单击并显示烤面包,例如属性。我当前的代码有很多问题。如何生成这种类型的视图?我建议我们从头开始,因为这可能很容易创建,而且我的代码很混乱。提前谢谢 import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.os.Bundle; import

我对Android GUI设计非常陌生。我正在尝试创建一个板,如下所示。单元格可以有不同的颜色,并且应该可以单击并显示烤面包,例如属性。我当前的代码有很多问题。如何生成这种类型的视图?我建议我们从头开始,因为这可能很容易创建,而且我的代码很混乱。提前谢谢

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;

public class GridViewActivity extends Activity {

private GridView list;
ArrayList<String> data = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gridview);
    for (int i = 0; i < 10; i++) {
        for(int j=0;j<20;j++)
        data.add(i+"-"+j);
    }
    GridViewCustomAdapter adapter = new GridViewCustomAdapter(this, data);

    list = (GridView) findViewById(R.id.grid_view);
    list.setAdapter(adapter);

}
}

import java.util.ArrayList;
导入android.app.Activity;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.GridView;
公共类GridViewActivity扩展了活动{
私有网格视图列表;
ArrayList数据=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview);
对于(int i=0;i<10;i++){

对于(intj=0;j这里有一个使用按钮的简单示例。您可以添加大小调整、滚动视图等

public class MainActivity extends Activity {

    TableLayout table;
    private static final int TABLE_WIDTH = 12;
    private static final int TABLE_HEIGHT = 8;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        table = (TableLayout) findViewById(R.id.view_root);

        // Populate the table with stuff
        for (int y = 0; y < TABLE_HEIGHT; y++) {
            final int row = y;
            TableRow r = new TableRow(this);
            table.addView(r);
            for (int x = 0; x < TABLE_WIDTH; x++) {
                final int col = x;
                Button b = new Button(this);
                b.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), 
                            "You clicked (" + row + "," + col + ")",
                            Toast.LENGTH_SHORT).show();
                    }
                });
                r.addView(b);
            }
        }
    }
}
公共类MainActivity扩展活动{
表格布局表;
专用静态最终整型表_宽度=12;
专用静态最终int表_高度=8;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
table=(TableLayout)findviewbyd(R.id.view\u root);
//在表中填充内容
对于(int y=0;y
那么您的布局文件就是

<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/view_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"     
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity">
</TableLayout>


稍后我会发布一个更全面的答案,但请查看,谢谢。请尽量让代码变得愚蠢!当然!我还编写了一个自定义视图,这是一个。可能不完全是您想要的,但您会更改onTouchEvent()方法一点,以获得所需的功能。许多代码可以出于您的目的而删除(ScaleListener、setUserPointCoords、setMapUri、setDisplayMap及其成员变量)。您的代码太复杂了,lol。您能简化它吗?:)它应该设置一个网格布局,每个网格内都显示一个图片/正方形,谢谢!但12x8表格不适合屏幕。我如何使所有表格都适合屏幕(自动调整大小以适应屏幕大小)?或者很难,如何使它们变小并添加滚动条?您可以添加android:shrinkColumns=“*”到TableLayout xml以收缩按钮谢谢提示。我可以应用相同的东西,但垂直吗?(例如,收缩行,但我们没有)
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/view_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"     
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity">
</TableLayout>