gpt4 book ai didi

android - 在 Android 中创建自定义对话框

转载 作者:可可西里 更新时间:2023-11-01 18:54:57 25 4
gpt4 key购买 nike

我正在尝试在 Android 中创建自定义对话框。但是无论我尝试做什么,我都无法更改对话框的宽度。它只是保持不变。以下是我设置为对话框内容的 View 。

<RelativeLayout  
android:id="@+id/current_stats"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible">
<ImageView android:id="@+id/player_image"
android:src="@drawable/person"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
<TextView
android:id="@+id/player_name"
android:layout_below="@id/player_image"
android:layout_centerHorizontal="true"
android:text="Raja Ram"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageButton android:id="@+id/dialog_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="#00000000"
android:src="@drawable/close_button_selector"/>
<ImageButton android:id="@+id/dialog_flip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:background="#00000000"
android:src="@drawable/rotate"/>
</RelativeLayout>

如您所见,在此代码示例中,我到处都在使用 wrap_content。我也尝试了以下选项

1) 像这样创建对话框时设置自定义样式。

dialog = new Dialog(this,R.style.Theme_Dialog);

样式如下

<resources>
<style name="Theme" parent="android:Theme">
</style>
<style name="Theme.Dialog">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>
</resources>

2) 像这样在 onCreateDialog() 中设置 View 的参数

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.player_info, null, false);
ViewGroup.LayoutParams p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.setContentView(v,p);

3) 我也试过在 onCreateDialog() 方法中这样设置 Window 参数

WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width=WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(params);

但还是没有运气。有人可以帮我解决这个问题吗?难道我做错了什么??您还可以建议我如何设置对话窗口的 x 和 y 位置吗?

谢谢

最佳答案

        dialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar);

dialog.setContentView(R.layout.custom_dialog);

LayoutParams lp=dialog.getWindow().getAttributes();
lp.x=100;lp.y=100;lp.width=100;lp.height=200;lp.gravity=Gravity.TOP | Gravity.LEFT;
lp.dimAmount=0;
lp.flags=LayoutParams.FLAG_LAYOUT_NO_LIMITS | LayoutParams.FLAG_NOT_TOUCH_MODAL;
// dialog.getWindow().setAttributes(lp);

dialog.show();

这对我来说效果很好......

关于android - 在 Android 中创建自定义对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399667/

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