2017-10-09 48 views
0

在Android Studio中我設計了一個新的Activity UI看起來像下面的不一致:的Android ConstraintLayouts是

enter image description here

但在運行時的所有部件(除敏(秒)TextView)被堆積在左上角(我會加入截圖,但Imgur或AWS S3有問題,因此不會允許我上傳)。

下面是我目前擁有的用戶界面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:context="com.example.zacharvey.freedomawsapp.MatchSetupActivity"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="156dp" 
     android:layout_height="27dp" 
     android:text="Match Setup" 
     android:textSize="18sp" 
     tools:layout_editor_absoluteY="1dp" 
     android:layout_marginLeft="16dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="146dp" 
     android:layout_height="23dp" 
     android:layout_marginLeft="16dp" 
     android:text="Consent Type:" 
     android:textSize="14sp" 
     tools:layout_editor_absoluteY="64dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/textView5" /> 

    <RadioButton 
     android:id="@+id/consent.voice" 
     android:layout_width="166dp" 
     android:layout_height="31dp" 
     android:checked="true" 
     android:defaultFocusHighlightEnabled="false" 
     android:text="Voice-Activated" 
     tools:layout_editor_absoluteY="95dp" 
     android:layout_marginRight="202dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/textView5" /> 

    <RadioButton 
     android:id="@+id/consent.switch" 
     android:layout_width="201dp" 
     android:layout_height="28dp" 
     android:text="Connected Switches" 
     tools:layout_editor_absoluteY="126dp" 
     android:layout_marginLeft="16dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/consent.voice" /> 

    <TextView 
     android:id="@+id/textView7" 
     android:layout_width="129dp" 
     android:layout_height="19dp" 
     android:layout_marginLeft="16dp" 
     android:text="Go Offset:" 
     tools:layout_editor_absoluteY="196dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/consent.switch" /> 

    <TextView 
     android:id="@+id/textView8" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Min (sec):" 
     android:layout_marginLeft="16dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/textView7" /> 

    <TextView 
     android:id="@+id/textView9" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="16dp" 
     android:text="Max (sec):" 
     tools:layout_editor_absoluteY="290dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/textView8" /> 

    <EditText 
     android:id="@+id/offset.min" 
     android:layout_width="38dp" 
     android:layout_height="32dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     android:text="1" 
     tools:layout_editor_absoluteY="233dp" 
     tools:layout_editor_absoluteX="107dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/textView9" /> 

    <EditText 
     android:id="@+id/offset.max" 
     android:layout_width="37dp" 
     android:layout_height="38dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     android:text="4" 
     tools:layout_editor_absoluteY="290dp" 
     tools:layout_editor_absoluteX="108dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/offset.min" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="toO1Login" 
     android:text="Next >>" 
     tools:layout_editor_absoluteY="398dp" 
     android:layout_marginLeft="16dp" 
     layout_constraintLeft_toLeftOf="parent" 
     layout_constraintTop_toBottomOf="@+id/offset.max" /> 

</android.support.constraint.ConstraintLayout> 

我的問題:爲什麼我的敏(SEC)TextView在正確的位置顯示的唯一窗口小部件?我需要對其他小部件/視圖做些什麼才能使它們正確定位?

回答

1

您的意見不是垂直約束。你應該使用某種類型的layout_constraintTop_toTopOf等。

您的「Min(Sec)」視圖是唯一正確顯示的視圖,因爲它是唯一垂直約束的視圖。更改您的代碼是這樣的:

<?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" 
    android:layout_width="match_parent"            
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="156dp" 
     android:layout_height="27dp" 
     android:layout_marginLeft="16dp" 
     android:text="Match Setup" 
     android:textSize="18sp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toTopOf="parent"/> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="146dp" 
     android:layout_height="23dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginTop="32dp" 
     android:text="Consent Type:" 
     android:textSize="14sp" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView"/> 

    <RadioButton 
     android:id="@+id/consent.voice" 
     android:layout_width="166dp" 
     android:layout_height="31dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="202dp" 
     android:checked="true" 
     android:defaultFocusHighlightEnabled="false" 
     android:text="Voice-Activated" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView5"/> 

    <RadioButton 
     android:id="@+id/consent.switch" 
     android:layout_width="201dp" 
     android:layout_height="28dp" 
     android:layout_marginLeft="16dp" 
     android:text="Connected Switches" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/consent.voice"/> 

    <TextView 
     android:id="@+id/textView7" 
     android:layout_width="129dp" 
     android:layout_height="19dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginTop="32dp" 
     android:text="Go Offset:" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/consent.switch"/> 

    <TextView 
     android:id="@+id/textView8" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="16dp" 
     android:layout_marginTop="16dp" 
     android:text="Min (sec):" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView7"/> 

    <TextView 
     android:id="@+id/textView9" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="16dp" 
     android:layout_marginTop="32dp" 
     android:text="Max (sec):" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView8"/> 

    <EditText 
     android:id="@+id/offset.min" 
     android:layout_width="38dp" 
     android:layout_height="32dp" 
     android:layout_marginLeft="16dp" 
     android:ems="10" 

     android:inputType="textPersonName" 
     android:text="1" 
     app:layout_constraintBottom_toBottomOf="@id/textView8" 
     app:layout_constraintLeft_toRightOf="@id/textView8" 
     app:layout_constraintTop_toTopOf="@id/textView8"/> 

    <EditText 
     android:id="@+id/offset.max" 
     android:layout_width="37dp" 
     android:layout_height="38dp" 
     android:layout_marginLeft="16dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     android:text="4" 
     app:layout_constraintBottom_toBottomOf="@id/textView9" 
     app:layout_constraintLeft_toRightOf="@id/textView9" 
     app:layout_constraintTop_toBottomOf="@+id/offset.min" 
     app:layout_constraintTop_toTopOf="@id/textView9"/> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="32dp" 
     android:layout_marginLeft="16dp" 
     android:onClick="toO1Login" 
     android:text="Next >>" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent"/> 

</android.support.constraint.ConstraintLayout> 
+0

謝謝@Benjamin(+1) - 好讓我問這個法子,讓我們說,我想我所有的意見/部件的只是左對齊和堆放在產生一種「垂直排序」,其中「第一個」視圖出現在左上角,「第二個」視圖直接出現在該下方(但是再次,左對齊)等等......什麼我需要將XML屬性添加到每個視圖來完成此操作?再次感謝! – smeeb

+1

在每個視圖中使用'layout_constraintLeft_toLeftOf =「parent」',其餘部分在最頂層視圖上使用'layout_constraintTop_toTopOf ='parent'',在其他視圖中使用'layout_constraintTop_toBottomOf =「id_of_the_previous_view」''。 – Benjamin

+0

謝謝@Benjamin(再次+1),但請參閱我上面的更新。我添加了最新的更改,並且仍然將所有視圖/小部件疊加在一起(z軸)在屏幕的左上角。有任何想法嗎? – smeeb