Android 栅格布局添加等距图像
我试图以编程方式将指定数量的图像放入网格布局中,并希望它们的大小和分布均匀。每当我尝试添加多个图像时,网格布局仅显示一个。我做错了什么 XML:Android 栅格布局添加等距图像,android,image,gridview,grid-layout,Android,Image,Gridview,Grid Layout,我试图以编程方式将指定数量的图像放入网格布局中,并希望它们的大小和分布均匀。每当我尝试添加多个图像时,网格布局仅显示一个。我做错了什么 XML: 爪哇: //reset data and grid data.clear(); gridLayout.removeAllViews(); Random random = new Random(); for(int i = 0; i < num; i++){ data.add(String.fo
爪哇:
//reset data and grid
data.clear();
gridLayout.removeAllViews();
Random random = new Random();
for(int i = 0; i < num; i++){
data.add(String.format("%." + 0 + "f", random.nextDouble() * (6 - 1) + 1));
ImageView imageView = new ImageView(getContext());
switch (data.get(i)) {
case "1":
imageView.setImageResource(R.drawable.dice1);
break;
case "2":
imageView.setImageResource(R.drawable.dice2);
break;
case "3":
imageView.setImageResource(R.drawable.dice3);
break;
case "4":
imageView.setImageResource(R.drawable.dice4);
break;
case "5":
imageView.setImageResource(R.drawable.dice5);
break;
default:
imageView.setImageResource(R.drawable.dice6);
break;
}
gridLayout.addView(imageView, i);
}
//重置数据和网格
data.clear();
gridLayout.removeAllViews();
随机=新随机();
for(int i=0;i
结果是:
我想要的是:
看看这些属性 android:columnCount=“2” android:rowCount=“2” 在将图像添加到gridview之前,请尝试播放上面列出的属性 如果布局包含1个图像,则将两者都设置为1 如果布局包含2个图像,则将行设置为1,将列设置为2。 如果布局包含3个图像,则将行设置为1,将列设置为3 如果布局包含4,则将两者都设置为2
等等。看看这些属性 android:columnCount=“2” android:rowCount=“2” 在将图像添加到gridview之前,请尝试播放上面列出的属性 如果布局包含1个图像,则将两者都设置为1 如果布局包含2个图像,则将行设置为1,将列设置为2。 如果布局包含3个图像,则将行设置为1,将列设置为3 如果布局包含4,则将两者都设置为2 等等。[![屏幕截图][1][1]
package com.plumtestongo.sample;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.ViewTreeObserver;
import android.widget.GridLayout;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final GridLayout layout = (GridLayout) findViewById(R.id.gridlayout);
ViewTreeObserver vto = layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
layout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();
setViews(height, width);
}
});
}
private void setViews(int layoutHeight, int layoutWidth) {
int width = layoutWidth / 3;
int height = layoutHeight / 2;
Log.i(getClass().getName(), "Image height" + height + " Width:" + width);
ArrayList<String> data = new ArrayList<>();
data.clear();
GridLayout gridLayout = (GridLayout) findViewById(R.id.gridlayout);
gridLayout.removeAllViews();
Random random = new Random();
int num = 6;
for (int i = 0; i < num; i++) {
data.add(String.format("%." + 0 + "f", random.nextDouble() * (6 - 1) + 1));
ImageView imageView = new ImageView(this);
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams();
layoutParams.width = width;
layoutParams.height = height;
imageView.setLayoutParams(layoutParams);
switch (data.get(i)) {
case "1":
imageView.setImageResource(R.drawable.dice2);
break;
case "2":
imageView.setImageResource(R.drawable.dice2);
break;
case "3":
imageView.setImageResource(R.drawable.dice2);
break;
case "4":
imageView.setImageResource(R.drawable.dice2);
break;
case "5":
imageView.setImageResource(R.drawable.dice2);
break;
default:
imageView.setImageResource(R.drawable.dice2);
break;
}
gridLayout.addView(imageView, i);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridLayout
android:id="@+id/gridlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:padding="10dp"
android:gravity="center"/>
</LinearLayout>
package com.plumtestongo.sample;
导入android.os.Build;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.ViewTreeObserver;
导入android.widget.GridLayout;
导入android.widget.ImageView;
导入java.util.ArrayList;
导入java.util.Random;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终GridLayout=(GridLayout)findViewById(R.id.GridLayout);
ViewTreeObserver vto=layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(新的ViewTreeObserver.OnGlobalLayoutListener(){
@凌驾
公共图书馆{
if(Build.VERSION.SDK\u INT
package com.plumtestongo.sample;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.ViewTreeObserver;
import android.widget.GridLayout;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final GridLayout layout = (GridLayout) findViewById(R.id.gridlayout);
ViewTreeObserver vto = layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
layout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();
setViews(height, width);
}
});
}
private void setViews(int layoutHeight, int layoutWidth) {
int width = layoutWidth / 3;
int height = layoutHeight / 2;
Log.i(getClass().getName(), "Image height" + height + " Width:" + width);
ArrayList<String> data = new ArrayList<>();
data.clear();
GridLayout gridLayout = (GridLayout) findViewById(R.id.gridlayout);
gridLayout.removeAllViews();
Random random = new Random();
int num = 6;
for (int i = 0; i < num; i++) {
data.add(String.format("%." + 0 + "f", random.nextDouble() * (6 - 1) + 1));
ImageView imageView = new ImageView(this);
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams();
layoutParams.width = width;
layoutParams.height = height;
imageView.setLayoutParams(layoutParams);
switch (data.get(i)) {
case "1":
imageView.setImageResource(R.drawable.dice2);
break;
case "2":
imageView.setImageResource(R.drawable.dice2);
break;
case "3":
imageView.setImageResource(R.drawable.dice2);
break;
case "4":
imageView.setImageResource(R.drawable.dice2);
break;
case "5":
imageView.setImageResource(R.drawable.dice2);
break;
default:
imageView.setImageResource(R.drawable.dice2);
break;
}
gridLayout.addView(imageView, i);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridLayout
android:id="@+id/gridlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:padding="10dp"
android:gravity="center"/>
</LinearLayout>
package com.plumtestongo.sample;
导入android.os.Build;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.view.ViewTreeObserver;
导入android.widget.GridLayout;
导入android.widget.ImageView;
导入java.util.ArrayList;
导入java.util.Random;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的空(Bun