如何为 GridLayout 初始化子视图
How to Initialize child views for GridLayout
如何初始化 GridLayout
的子项并在 GridLayout
中存在的多个 ImageView
元素上设置 onClickListener
以继续另一个 activity
这是我的 java 代码:
public class ResidentialActivity extends Activity {
GridView grid;
ImageView img1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_residential);
GridLayout grid= (GridLayout) findViewById(R.id.grid);
}
}
这对我有用。我正在将单元格添加到 GridLayout 并将 OnClick 侦听器连接到每个单元格。
如果您已经填充了 GridLayout,您可以使用 GridLayout.getChildCount()
和 GridLayout.getChildAt(i)
来操作每个单元格以添加 OnClick 侦听器。
您需要先让 ResidentialActivity 实现 View.OnClickListener,如下所示:
public class ResidentialActivity extends AppCompatActivity implements View.OnClickListener {
并覆盖 OnClick() 方法,例如:
@Override
protected void onClick(final View view) {
. . . launch your other activity in here
}
要连接 onClick,您可以遍历单元格(您可以使用 GridLayout.getChildCount()):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_layout);
gridLayout = (GridLayout) findViewById(R.id.gl_puzzle);
. . .
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < NUM_CELLS; i++) {
RelativeLayout tmpCell = (RelativeLayout) inflater.inflate(R.layout.picture_cell, gridLayout, false);
ImageView pic = tmpCell.findViewById(R.id.iv_cell_image);
pic.setImageBitmap(pieces.get(i));
tmpCell.setOnClickListener(this);
gridLayout.addView(tmpCell);
}
这是我的 xml 布局文件 picture_cell
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl_cell"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_cell_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:background="@android:color/background_dark"
android:minHeight="20dp"
android:minWidth="20dp"
android:padding="1dp" />
</RelativeLayout>
如何初始化 GridLayout
的子项并在 GridLayout
中存在的多个 ImageView
元素上设置 onClickListener
以继续另一个 activity
这是我的 java 代码:
public class ResidentialActivity extends Activity {
GridView grid;
ImageView img1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_residential);
GridLayout grid= (GridLayout) findViewById(R.id.grid);
}
}
这对我有用。我正在将单元格添加到 GridLayout 并将 OnClick 侦听器连接到每个单元格。
如果您已经填充了 GridLayout,您可以使用 GridLayout.getChildCount()
和 GridLayout.getChildAt(i)
来操作每个单元格以添加 OnClick 侦听器。
您需要先让 ResidentialActivity 实现 View.OnClickListener,如下所示:
public class ResidentialActivity extends AppCompatActivity implements View.OnClickListener {
并覆盖 OnClick() 方法,例如:
@Override
protected void onClick(final View view) {
. . . launch your other activity in here
}
要连接 onClick,您可以遍历单元格(您可以使用 GridLayout.getChildCount()):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_layout);
gridLayout = (GridLayout) findViewById(R.id.gl_puzzle);
. . .
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < NUM_CELLS; i++) {
RelativeLayout tmpCell = (RelativeLayout) inflater.inflate(R.layout.picture_cell, gridLayout, false);
ImageView pic = tmpCell.findViewById(R.id.iv_cell_image);
pic.setImageBitmap(pieces.get(i));
tmpCell.setOnClickListener(this);
gridLayout.addView(tmpCell);
}
这是我的 xml 布局文件 picture_cell
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl_cell"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_cell_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:background="@android:color/background_dark"
android:minHeight="20dp"
android:minWidth="20dp"
android:padding="1dp" />
</RelativeLayout>