2017-07-27 57 views
0

我一直在試圖爲我的應用程序(使用ConstraintLayout)製作一個GUI,其中我有像按鈕對齊的圖像,但是,這些按鈕(或任何其他實際)有這個奇怪的問題,即使我移動(並保存)約束位置,它只是返回一些數字(在本例中爲16)。ConstraintLayout編輯器偏向

我在這裏做錯了什麼?造成這種情況的原因/爲什麼編輯重新設置位置?

http://i.imgur.com/OFndFb7.gifv(GIF - 40年代)

版本:

  • ConstraintLayout爲Android - v 1.0.2
  • Android的工作室 - 2.3.3#AI-162.4069837

XML佈局:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:layout_editor_absoluteY="25dp" 
    tools:layout_editor_absoluteX="0dp"> 

    <Button 
     android:id="@+id/Button_Color_Red" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_marginTop="80dp" 
     android:layout_marginStart="16dp" 
     android:background="@drawable/btn_red_color_menu" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" /> 

    <Button 
     android:id="@+id/Button_Color_Indigo" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_marginTop="80dp" 
     android:layout_marginStart="8dp" 
     android:background="@drawable/btn_indigo_color_menu" 
     app:layout_constraintLeft_toRightOf="@+id/Button_Color_Yellow" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <Button 
     android:id="@+id/Button_Color_Green" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_marginTop="80dp" 
     android:layout_marginStart="8dp" 
     android:background="@drawable/btn_green_color_menu" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toRightOf="@+id/Button_Color_Indigo"/> 

    <Button 
     android:id="@+id/Button_Color_Yellow" 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:layout_marginTop="80dp" 
     android:layout_marginStart="8dp" 
     android:background="@drawable/btn_yellow_color_menu" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toRightOf="@+id/Button_Color_Red" /> 

</android.support.constraint.ConstraintLayout> 

XML爲btn_x_color_menu:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/Red_Primary"/> 
     </shape> 
    </item> 
</selector> 
+0

如果你看看XML,邊界是否也變回到16dp呢? –

+0

是的,'android:layout_marginStart =「16dp」' – Fabricio20

+0

嗯。我很難過......我從不使用設計選項卡,所以我不太熟悉它的怪癖。 –

回答

2

上有按鈕Button_Color_Green是衝突的兩個屬性。

android:layout_marginLeft="16dp" 
    android:layout_marginStart="8dp" 

的設計者創建android:layout_marginLeft當你移動的按鈕,但android:layout_marginStart保持不變,並在發生衝突。這就是移動窗口小部件後邊距恢復的原因。

這兩個屬性對於從左到右的佈局應該是相同的,但是設計者似乎想要更改android:layout_marginLeft,但是如果它存在,則將榮譽android:layout_marginStart

這可能是ConstraintLayout 1.0.2中的一個錯誤。在找到修復或更好的解決方案之前,您可以手動將這些屬性更改爲相同或僅使用android:layout_marginLeft,並在稍後時間手動添加android:layout_marginStart。 (林特應該提醒你這樣做。)

既然你知道這個問題,你或許能夠找到一個更好的解決方案。

我希望這會有所幫助。

+1

好的。如果您可以定位API 17+,只需編寫'android:layout_marginStart'並放下'android:layout_marginLeft'。 – ephemient