将父线性布局的宽度设置为屏幕的百分比
Set width of parent linear layout as percentage of the screen
我正在构建一个 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>
但是,这不起作用,因为当我 运行 在屏幕尺寸较小的设备上运行应用程序时,对话框片段被剪切了。
如何将对话框片段的宽度设置为屏幕尺寸的百分比?这是可能的还是我必须诉诸编程设置?
这是一个正确的方法,如果你想让 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>
Since I know that you can't use layout_weight in a relative layout
我们可以在任何视图和布局中使用 layout_weight,如果它是 LinearLayout
的直接子项
下面的代码将使相对布局成为父级的 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>
希望对您有所帮助。
有了新的百分比支持库,您现在可以使用 PercentRelativeLayout
。
我正在构建一个 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>
但是,这不起作用,因为当我 运行 在屏幕尺寸较小的设备上运行应用程序时,对话框片段被剪切了。
如何将对话框片段的宽度设置为屏幕尺寸的百分比?这是可能的还是我必须诉诸编程设置?
这是一个正确的方法,如果你想让 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>
Since I know that you can't use layout_weight in a relative layout
我们可以在任何视图和布局中使用 layout_weight,如果它是 LinearLayout
的直接子项下面的代码将使相对布局成为父级的 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>
希望对您有所帮助。
有了新的百分比支持库,您现在可以使用 PercentRelativeLayout
。