我正在学习Android对话框,我对于决定他们身高的因素感到困惑。如果我将此XML用于我的对话框布局。 。 。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/AButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10px"
android:text="Click Me to Dismiss"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_toLeftOf="@id/AButton"
android:text="Click this button: "
/>
<ImageView
android:id="@+id/an_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="42px"
android:src="@drawable/screw50">
</ImageView>
/>
我得到了这个对话框。 。 。
但Developer.Android.com说......
“ WRAP_CONTENT,这意味着视图要足够大以封闭其内容(加上填充)”
...那么为什么对话框要比它需要的高得多呢?
如果我用
替换布局高度 android:layout_height="200px"
它会产生一个适当的短对话框,但我不想使用明确的像素高度(这不是一个好习惯)。如何使对话框的内容足够大?
答案 0 :(得分:7)
TextView的高度为fill_parent。是否有可能将此相对于RelativeLayout的高度与wrap_content一起将其高度推到最大尺寸?如果将TextView高度更改为wrap_content会发生什么?
要添加,the Android SDK表示RelativeLayout的子项不能依赖布局,例如align_parent_bottom。我假设fill_parent是一个依赖项,因此打破了布局。
答案 1 :(得分:1)
<LinearLayout/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@android:color/white">
<TextView android:id="@+id/message"
android:padding="5dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"/>
...
</LinearLayout>
它包含了我的内容。
答案 2 :(得分:1)
过去两天我一直在研究同样的问题。最终它在我的对话框风格中使用了一些属性。
这是我正在使用的风格:
<style name="SearchFieldSetterDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:gravity">bottom</item>
</style>
关键的归属是:
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
第一个,我想,需要对windowManager说,将Frames放在对话框周围 第二个是取出为对话标题保留的空间。
使用这种风格和以下布局我终于有了它的工作:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
...
</LinearLayout>
我的解决方案的问题是,android:windowIsFloating
attriubute设置为true
和更早的平台然后3.0我无法找到一种方法使对话框能够填满屏幕,即使{ {1}}被设置为layout_width
希望这会帮助某人......并为我糟糕的英语而烦恼