美好的一天。为这个令人困惑的标题道歉。
我正在构建一个Android应用程序,我有一个对话框片段。对话框片段具有设置的宽度。但是,问题是当应用程序在具有不同屏幕大小的设备上运行时,对话框片段未正确居中。
最初,我所拥有的是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="500dp"
android:layout_height="wrap_content">
<-- code goes here -->
</RelativeLayout>
如您所见,我有一个定义宽度的relativeLayout。因为我知道你不能在相对布局中使用layout_weight
,所以我做的是将线性布局中的父相对布局包裹起来:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:weightSum="1">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</RelativeLayout>
</LinearLayout>
但是,当我在屏幕尺寸较小的设备上运行应用程序时,会切断对话框片段,因此不起作用。
如何将对话框片段的宽度设置为屏幕大小的百分比?这是可能的还是我不得不求助于以编程方式设置它?
非常感谢任何帮助,谢谢。
答案 0 :(得分:6)
这是一种正确的方法,如果你想让RelativeLayout有40%的屏幕宽度,但这种技术不适用于父布局,因为父布局没有父布局而android:layout_weight不影响
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="100">
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="40">
</RelativeLayout>
因为我知道你不能在相对布局中使用layout_weight
我们可以在任何视图和布局中使用layout_weight,如果它指向LinearLayout的子项
答案 1 :(得分:2)
使用新的百分比支持库,您现在可以使用PercentRelativeLayout
。
答案 2 :(得分:0)
下面的代码将使父级的相对布局为1/2,并将其水平居中定位:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal">
<RelativeLayout
android:layout_width="0dp"
android:layout_weight="0.5"
android:layout_height="wrap_content">
</RelativeLayout>
</LinearLayout>
希望它有所帮助。