gpt4 book ai didi

java - 带有 2x2 imageview android 的网格布局

转载 作者:行者123 更新时间:2023-12-01 09:33:27 26 4
gpt4 key购买 nike

我有一个 gridview,它从适配器获取 4 个 ImageView ,我想将它们调整为 2x2 大小并适合我的屏幕。

这是代码:

@Override
protected View createQuizContentView() {
mAnswerView = new GridView(getContext());

StateListDrawable selector = new StateListDrawable();
selector.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(Color.LTGRAY));
selector.addState(new int[]{-android.R.attr.state_pressed}, new ColorDrawable(Color.WHITE));

mAnswerView.setSelector(selector);
//mAnswerView.setSelector(R.drawable.selector_button);

mAnswerView.setNumColumns(2);
mAnswerView.setAdapter(new OptionsQuizAdapter(getQuiz().getOptions(),
R.layout.imgitem_answer));


mAnswerView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mAnswered = position;
allowAnswers(mAnswerView,position);
}
});
return mAnswerView;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(mLayoutId, parent, false);
}
final ImageView imageView;
String text = getText(position);
Context context = parent.getContext();

Resources resources = context.getResources();

String stripped = text.replace("-", "");
final int resourceId = resources.getIdentifier(stripped, "drawable",
context.getPackageName());

Drawable d = ContextCompat.getDrawable(context, resourceId);

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = size.y;

double dviewheight = height/3.32;
int viewheight = (int)dviewheight;

imageView = (ImageView) convertView;
imageView.setPadding(64, 64, 64, 64);

convertView.setLayoutParams(newGridView.LayoutParams(GridView.AUTO_FIT, viewheight));

imageView.setImageDrawable(d);

return imageView;
}

目前,我通过获取屏幕尺寸并划分它来设置 GridView 内 ImageView 的高度,这在大多数设备分辨率上都可以正常工作,但我仍然更喜欢一个更动态的解决方案,如果我添加更多行,该解决方案就可以工作 GridView 。

它看起来是这样的:

Screensize/magic number

当我在高度上使用 GridView.AUTO_FIT 时,它会添加很多无用的空间,并且我会在右侧看到一个滚动条,如下所示:

Useless space vertically

我尝试了几种配置和拉伸(stretch),但似乎都不起作用。有什么方法可以在不使用 xml 的情况下以编程方式实现我想要的目标吗?

最佳答案

试试这个: gridView.setNumColumns(2);

关于java - 带有 2x2 imageview android 的网格布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39203410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com