网格视图
GridView指定行列numColumns="2"
另一个线性布局代码存储图片和文字:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/img"
android:layout_gravity="center"></ImageView>
<TextView
android:id="@+id/tv"
android:layout_width="100dp"
android:layout_height="30dp"
android:text="爱心"
android:textColor="#E91E63"
android:textSize="20dp"
android:layout_gravity="center"
android:gravity="center"></TextView>
</LinearLayout>
网格视图代码部分,采用伸缩布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
后端代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_view);
gridView();
}
void gridView(){
GridView gv = findViewById(R.id.gridview);
int[] imgs = {R.drawable.img,R.drawable.idea,R.drawable.qq,R.drawable.img,R.drawable.idea,R.drawable.qq};
String[] names = {"爱心","IDEA","腾讯qq","比心","JDK","鹅场"};
List<Map<String,Object>> list = new ArrayList<>();
int i ;
for( i = 0;i<imgs.length;i++){
HashMap<String, Object> map = new HashMap<>();
map.put("img",imgs[i]);
map.put("name",names[i]);
list.add(map);
}
gv.setAdapter(new SimpleAdapter(this,list,R.layout.gridview_item,new String[]{"img","name"},new int[]{R.id.iv,R.id.tv}));
}
消息提示
选项菜单和子菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(110,11,1,"开始游戏"); // 组,编号,组内顺序,文字
menu.add(110,22,2,"暂停游戏");
SubMenu sm = menu.addSubMenu(110,33,3,"退出游戏"); // 父级菜单
sm.add(112,44,1,"确定");
sm.add(112,55,2,"取消");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId() == 11){
tv.setText("开始游戏");
}else if (item.getItemId() == 22){
tv.setText("暂停游戏");
}else if (item.getItemId() == 33){
tv.setText("退出游戏");
}
return super.onOptionsItemSelected(item);
}
上下文菜单
重写onCreateContextMenu方法,注意:这里需要在onCreate方法中注册上下文菜单registerForContextMenu(tv);
上下文菜单的监听事件onContextItemSelected方法,
代码如下:
// 上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v == tv) {
menu.setHeaderTitle("选择一种颜色:");
menu.add(119,1,1,"粉色");
menu.add(119,2,2,"紫色");
}
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) { // 上下文菜单的监听事件
if(item.getItemId() == 1){
tv.setText("粉色");
}else if (item.getItemId() == 2){
tv.setText("紫色");
}
return super.onContextItemSelected(item);
}