如何在 android 中将 vw 测量值转换为 dp?
How to covert vw measurement to dp in android?
Android Studio Code Snippet
我有一个 android 设备,它的最大宽度和高度以 dp 单位指定。
- 最大宽度 - 1079 dp
- 最大高度 - 399 dp
我想创建一个 LinearLayout,它必须垂直和水平居中,其高度在 wrap_content 长度和宽度中以占据 50vw 单位。我知道 50vw 表示占用宽度的 50% 大小,但是我很难转换这个 50vw 宽度要求转换为 dp 尺寸。
那么我是否应该将布局宽度硬编码为 399/2 dp = 199.5dp,它应该等于 50vw?或者我将设备的最大宽度简单地分成两半以匹配 50vw 要求是否正确?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="199.5dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:textAlignment="center" />
</LinearLayout>
</LinearLayout>
如果我的理解不正确,请告诉我?
谢谢
如果您正在使用 LinearLayout
并且希望宽度为父级的 50%,则可以使用 orientation="horizontal"
、weightSum
、layout_weight
。这是一个例子
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="2">
<LinearLayout
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:background="#f00" />
</LinearLayout>
如果您使用 ConstraintLayout
,您还可以使用带百分比的 Guideline
或 layout_constraintHorizontal_weight
将宽度设置为父宽度的 50%
您可以使用虚拟 LinearLayout
和当前 LinearLayout
,两种布局的 layout_weight 均为 1。这样的事情会起作用:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView .../>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#000">
</LinearLayout>
</LinearLayout>
</FrameLayout>
Android Studio Code Snippet
我有一个 android 设备,它的最大宽度和高度以 dp 单位指定。
- 最大宽度 - 1079 dp
- 最大高度 - 399 dp
我想创建一个 LinearLayout,它必须垂直和水平居中,其高度在 wrap_content 长度和宽度中以占据 50vw 单位。我知道 50vw 表示占用宽度的 50% 大小,但是我很难转换这个 50vw 宽度要求转换为 dp 尺寸。 那么我是否应该将布局宽度硬编码为 399/2 dp = 199.5dp,它应该等于 50vw?或者我将设备的最大宽度简单地分成两半以匹配 50vw 要求是否正确?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="199.5dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:textAlignment="center" />
</LinearLayout>
</LinearLayout>
如果我的理解不正确,请告诉我? 谢谢
如果您正在使用 LinearLayout
并且希望宽度为父级的 50%,则可以使用 orientation="horizontal"
、weightSum
、layout_weight
。这是一个例子
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="2">
<LinearLayout
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:background="#f00" />
</LinearLayout>
如果您使用 ConstraintLayout
,您还可以使用带百分比的 Guideline
或 layout_constraintHorizontal_weight
您可以使用虚拟 LinearLayout
和当前 LinearLayout
,两种布局的 layout_weight 均为 1。这样的事情会起作用:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView .../>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#000">
</LinearLayout>
</LinearLayout>
</FrameLayout>