如何将复杂的 LinearLayout 更改为 ConstraintLayout
How to change complex LinearLayout to ConstraintLayout
PercentRelativeLayout 已从 API 26 开始弃用,我在弃用之前创建了此布局。有谁知道将这个复杂布局更改为 ConstraintLayout 同时确保设计保持完全相同的最佳方法是什么?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="100">
<com.google.android.gms.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_stationmap_darktheme"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_weight="90"
android:layout_width="match_parent"
android:layout_height="0dp" />
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="10"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp">
<ImageView
android:id="@+id/imageViewSun"
app:layout_widthPercent="40%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
app:srcCompat="@drawable/ic_sun_white" />
<FrameLayout
android:id="@+id/switch_tgl"
app:layout_widthPercent="20%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_toEndOf="@id/imageViewSun">
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_stationmap_darktheme"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
</FrameLayout>
<ImageView
android:id="@+id/imageViewMoon"
android:importantForAccessibility="no"
app:layout_widthPercent="40%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
app:srcCompat="@drawable/ic_moon_white"
android:layout_toEndOf="@id/switch_tgl"/>
</android.support.percent.PercentRelativeLayout>
</LinearLayout>
关注 PercentRelativeLayout
到 ConstraintLayout
的转换,有几种方法。如果您是 ConstraintLayout
的最新 Beta 版,您可以使用一些新属性,这些属性似乎有助于减少百分比布局:
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5"
此功能的在线文档不多。 Here 是我 运行 穿过的。
如果您未使用测试版,您仍然可以通过使用准则并将您的观点限制在这些准则之间来完成您想要的。
是对您可能会发现对如何使用这两种技术有用的问题的回答。
PercentRelativeLayout 已从 API 26 开始弃用,我在弃用之前创建了此布局。有谁知道将这个复杂布局更改为 ConstraintLayout 同时确保设计保持完全相同的最佳方法是什么?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="100">
<com.google.android.gms.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map_stationmap_darktheme"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_weight="90"
android:layout_width="match_parent"
android:layout_height="0dp" />
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="10"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp">
<ImageView
android:id="@+id/imageViewSun"
app:layout_widthPercent="40%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
app:srcCompat="@drawable/ic_sun_white" />
<FrameLayout
android:id="@+id/switch_tgl"
app:layout_widthPercent="20%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_toEndOf="@id/imageViewSun">
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_stationmap_darktheme"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
</FrameLayout>
<ImageView
android:id="@+id/imageViewMoon"
android:importantForAccessibility="no"
app:layout_widthPercent="40%"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
app:srcCompat="@drawable/ic_moon_white"
android:layout_toEndOf="@id/switch_tgl"/>
</android.support.percent.PercentRelativeLayout>
</LinearLayout>
关注 PercentRelativeLayout
到 ConstraintLayout
的转换,有几种方法。如果您是 ConstraintLayout
的最新 Beta 版,您可以使用一些新属性,这些属性似乎有助于减少百分比布局:
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5"
此功能的在线文档不多。 Here 是我 运行 穿过的。
如果您未使用测试版,您仍然可以通过使用准则并将您的观点限制在这些准则之间来完成您想要的。