我正在使用Android SDK制作游戏。一路上,我需要显示弹出/对话框,就像用户可以升级的任何其他游戏一样。我遇到的问题是对话框的大小。我正在使用RelativeLayout,我正在使用“wrap_content”将背景设置为我的图像。
对话框占用内部视图大小的问题(或Android设置的默认对话框最小大小,以较大者为准)不是背景图像。如果我使用fill_parent,那么它会拉伸它。我花了几个小时和几个小时旋转,我似乎无法找到一个有效的方式,窗口的大小与背景图像的大小相匹配
有什么建议吗?这是一个非常常见的用例,必须有办法! 感谢
以下是一些布局内容
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/popup"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageButton
android:id="@+id/ibCloseDialog"
android:background="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/close" />
<Button
android:id="@+id/b1"
android:background="@drawable/blue_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/b2"
android:text="b1" />
<Button
android:id="@+id/b2"
android:background="@drawable/blue_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="b2" />
<Button
android:id="@+id/b3"
android:background="@drawable/blue_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/b2"
android:text="b2" />
</RelativeLayout>
答案 0 :(得分:2)
我曾遇到过在全屏显示对话框的问题。我使用自定义样式删除对话框的默认样式(大小/边距/填充)。所以也许你可以使用它来包装你的内容而忽略默认值。所以请尝试以下方法:
1)在styles.xml中添加自定义Dialog主题:
<style name="YourDialogTheme" parent="android:Theme.Dialog">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">false</item>
</style>
我认为高度,宽度和背景是这里的重要方面。也许你必须玩这些价值观。
2)使用以下代码段创建对话框:
Dialog dialog = new Dialog(context, R.style.YourDialogTheme)
答案 1 :(得分:0)
您使用的是atribute&#34; android:background&#34;你的RelativeLayout?如果是这种情况,您可以尝试这样做:
<RelativeLayout
.
.
.
>
<ImageView
android:layout_width="MATCH_PARENT"
android:layout_height="MATCH_PARENT"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/yourDrawable" />
</RelativeLayout>
此外:
答案 2 :(得分:0)
将单个大图像放在文件夹中并使用以下framelayout。添加到imgView
android:scaleType = "centerCrop"
答案 3 :(得分:0)
我不确定这是否是一种有效的解决方案,但由于对话框背景是资源文件,您可以获得背景的高度和宽度,并动态地将相同的高度和宽度设置为Dialog
。像这样的东西
//get the dialog background drawable
Drawable popUpDrawable = getResources().getDrawable(R.drawable.popup);
//get height and width of drawable
int drawableWidth = popUpDrawable.getIntrinsicWidth();
int drawableHeight = popUpDrawable.getIntrinsicHeight();
//creating dialog
Dialog dialog = new Dialog (context);
...
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialogWindow.getAttributes());
//set the height and width of drawable as height and width of dialog
lp.width = drawableWidth;
lp.height = drawableHeight;
dialog.show();
//set the attributes to dialog
dialog.getWindow().setAttributes(lp);
答案 4 :(得分:0)
您可以使用src属性设置图像。我建议你设置为背景。
<ImageButton
android:id="@+id/ibCloseDialog"
android:background="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
scaltype:centerInside
android:background="@drawable/close" />
答案 5 :(得分:0)
我遇到了类似的问题。当子女孩的孩子右侧或底部对齐时,Android并不喜欢RelativeLayout基于孩子的大小。这被认为是一个循环引用&#34;虽然我同意这样的布局会有有效的用例。我使用FrameLayout
:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="..." />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
[ other views with their relative layout parameters]
</RelativeLayout>
</FrameLayout>
在这个布局中,FrameLayout应该从图像视图中获取它的大小,然后RelativeLayout将匹配它。