2017-08-14 14 views
-1

PercentRelativeLayout自API 26起弃用,我在弃用前创建了此布局。有谁知道什么是将这个复杂的布局改为ConstraintLayout的最好方法,同时确保设计保持完全一样?如何将复杂的LinearLayout更改为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> 

enter image description here

回答

1

着眼于PercentRelativeLayoutConstraintLayout转换,有几个办法。如果你是ConstraintLayout最近的测试版,您可以使用一对夫妇的这些措施似乎旨在帮助百分比布局的弃用新的属性:

app:layout_constraintWidth_default="percent" 
    app:layout_constraintWidth_percent="0.5" 

没有大量的文档资料的在线使用此功能。 Here是我碰到的一个。

如果您尚未发布测试版,则仍然可以通过使用准则并在这些准则之间约束您的视图来完成您想要的操作。 Here是一个问题的答案,您可能会发现如何使用这两种技术都很有用。