2017-10-04 202 views
3

我在约束布局里面有一些问题,我有一个支持多行的TextView。当TextView展开时,它与约束布局内的其他组件重叠。下面是我使用的XML布局和一个GIF来演示。约束布局TextView重叠

任何帮助将不胜感激。

展示 - >https://puu.sh/xPFSF/3f6711a68f.gif

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:background="@color/activity_background" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

<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:focusableInTouchMode="true" 
    android:layout_height="0dp"> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/leftGuideline" 
     app:layout_constraintGuide_begin="20dp" 
     android:orientation="vertical"/> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/rightGuideline" 
     app:layout_constraintGuide_end="20dp" 
     android:orientation="vertical"/> 

    <TextView 
     android:id="@+id/subject" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:hint="@string/subject" 
     android:layout_marginTop="20dp" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintStart_toStartOf="@id/leftGuideline" 
     app:layout_constraintEnd_toEndOf="@id/rightGuideline" /> 

    <EditText 
     android:id="@+id/message" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:hint="@string/your_message" 
     android:layout_marginTop="20dp" 
     android:minLines="2" 
     app:layout_constraintTop_toBottomOf="@id/subject" 
     app:layout_constraintStart_toStartOf="@id/leftGuideline" 
     app:layout_constraintEnd_toEndOf="@id/rightGuideline" /> 

    <Button 
     android:id="@+id/sendMessageButton" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:text="@string/send_message" 
     style="@style/button_main" 
     app:layout_constraintVertical_bias="1" 
     app:layout_constraintTop_toBottomOf="@id/message" 
     app:layout_constraintStart_toStartOf="@id/leftGuideline" 
     app:layout_constraintBottom_toTopOf="@+id/saveDraftButton" 
     app:layout_constraintEnd_toEndOf="@id/rightGuideline" /> 

    <TextView 
     android:id="@+id/saveDraftButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/save_draft" 
     android:layout_marginBottom="10dp" 
     android:drawableStart="@drawable/icon_arrow" 
     android:gravity="center_vertical" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintStart_toStartOf="@id/leftGuideline" 
     app:layout_constraintEnd_toEndOf="@id/rightGuideline" /> 

</android.support.constraint.ConstraintLayout> 
</ScrollView> 

编辑:删除RecyclerView,因为它是没有必要的。 按照要求,button_main风格:

<style name="button_main" parent="@style/button"> 
     <item name="android:textColor">@color/button_main_stateful_text</item> 
     <item name="android:background">@drawable/primary_action_button</item> 
     <item name="android:textSize">@dimen/h5_size</item> 
     <item name="android:textAllCaps">false</item> 
    </style> 

button_main_stateful_text & primary_action_button只是两个选择颜色之间进行切换。

+0

共享代码@风格/ button_main – Ankita

+0

我能知道什么?RecyclerView –

回答

0

scottazord加入

app:layout_constraintBottom_toTopOf="@+id/sendMessageButton" 

到的EditText应该解决您的问题。

的EditText上完整的代码

<EditText 
     android:id="@+id/message" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:hint="your message" 
     android:layout_marginTop="20dp" 
     android:minLines="2" 
     app:layout_constraintTop_toBottomOf="@id/subject" 
     app:layout_constraintStart_toStartOf="@id/leftGuideline" 
     app:layout_constraintEnd_toEndOf="@id/rightGuideline" 
     app:layout_constraintBottom_toTopOf="@+id/sendMessageButton"/> 

现在这应该解决您的问题