gpt4 book ai didi

android - 带有 ImageView 的 AlertDialog 的大小太大

转载 作者:行者123 更新时间:2023-11-29 17:39:54 24 4
gpt4 key购买 nike

上下文

我想要一个带有正方形图像的 AlertDialog。我的图像大小为 800x800 像素,大于设备屏幕 (800x480)。图像会自动缩放到 AlertDialog 的大小。但是,对话框本身变得太大:它是应用程序的完整高度。

问题

我想让对话框只占据图像的空间(加上对话框按钮)。为什么这不会发生?我认为对话框是标准设置为 WRAP_CONTENT。

代码:

ImageView photo = new ImageView(getApplicationContext());
photo.setImageResource(R.drawable.imageof800x800pixels)
AlertDialog.Builder builder =
new AlertDialog.Builder(HangboardActivity.this).
//setMessage(R.string.nextgrip). // this is quite ugly
setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).
setView(photo);
final AlertDialog alert = builder.create();
alert.show();

编辑代码:

            ImageView photo = findPhotoForExercise();

int widthPX = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
int heightPX = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(widthPX, heightPX);
photo.setLayoutParams(layoutParams);

AlertDialog.Builder builder =
new AlertDialog.Builder(HangboardActivity.this).
setMessage(R.string.nextgrip). // this is quite ugly
setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).
setView(photo);
final AlertDialog alert = builder.create();
alert.show();

最佳答案

我认为您的第一个镜头是将图像缩小到足够小以适合您的对话框,但如果这还不够好,您可以设置它的高度和宽度(以密度像素为单位)以尊重所有屏幕尺寸固定大小。

LinearLayout layout = new LinearLayout(this);
LinearLayout.LayoutParams layoutParamsL = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(layoutParamsL);
layout.setGravity(Gravity.CENTER);
int widthPX = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());
int heightPX = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, getResources().getDisplayMetrics());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(widthPX, heightPX);
imageView.setLayoutParams(layoutParams);
layout.addView(photo);

我建议不要以编程方式使用布局,因为你可以做一个 xml 布局,它有一个 imageview,它的 layout_width 和 layout_height 像上面一样在固定 dp 中,并且会像上面提到的那样以编程方式执行它的确切行为。我认为 xml 布局是一种很好的做法,因为您会将所有布局放在一个地方并且它更具可读性,而且您可以针对不同的屏幕分辨率(mdpi、hdpi、xhdpi)和不同的设备配置(纵向、横向)使用不同的布局以及更多优势

关于android - 带有 ImageView 的 AlertDialog 的大小太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109140/

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