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