如何设置对话框片段的宽度和高度?我读过的所有内容都说要像这样重写OnStart方法:
public override void OnStart()
{
if (Dialog == null)
{
return;
}
int dialogWidth = 300;
int dialogHeight = 75;
Dialog.Window.SetLayout(dialogWidth, dialogHeight);
}
执行此操作时,应用程序崩溃,由于无法在我编写的代码之外失败,因此我无法捕获该错误。没有此替代,对话框将出现并按预期运行。
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:minWidth="300dp"
android:minHeight="75dp">
<TextView
android:text="Select section."
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textStyle="bold"
android:id="@+id/textView2" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/my_spinner" />
<Button
android:text="Ok"
android:layout_width="200px"
android:layout_gravity="center"
android:layout_height="34.5dp"
android:id="@+id/button_ok" />
</LinearLayout>
显然,android:minWidth
和android:minHeight
设置被忽略了,因为我得到的只是一个很小的对话框。
答案 0 :(得分:1)
与Mehmed代码等效的c#:
public override void OnResume()
{
int width = 300;
int height = 75;
base.OnResume();
}
我发现Xamarin所关注的Stack Overflow上发布的许多代码都是Java代码,我使用c#(Visual Studio 2017),对Java完全一无所知,很难转换为c#。当我在答案中看到Java代码时,通常只是跳过它。但是看到我提出问题的方式和Mehmed足够好以提供可行的解决方案后,我感到不得不发布c#转换。
您会注意到,我选择不将值放在dimens.xml
中,我不喜欢将值存储在“代码文件外部”中,然后在代码中检索它们,这往往使有时调试起来要困难得多。当您执行此操作时,所有发生的事情就是编译器将代码行替换为生成的obj文件中的值,所以..为什么呢?
鉴于这些价值观永远不会改变,我认为将它们放入dimens.xml
毫无意义,否则一定会让我信服!
答案 1 :(得分:0)
最好在dimens.xml
文件夹下的values
中定义尺寸:
<resources>
...
<dimen name="dialog_min_width">300dp</dimen>
<dimen name="dialog_min_height">75dp</dimen>
...
</resources>
您可以按以下方式更新onResume()
的{{1}}方法并尝试:
DialogFragment