2017-07-03 94 views
1

有没有一种方法可以在Android上拥有全屏行的元素? 我试图用table,GridView和linear来做,但是我现在很努力地工作,找不到帮助我的帖子。Android简单的百分比布局?

我刚才提出的想什么,我做的小图片: http://i.imgur.com/W0oTyaC.pngenter image description here

总之一点:

  • 标签和按钮应该只是大如他们的内容和配合到列中最大的标签

  • 该按钮应该粘在右侧

  • 标签应该坚持左侧

  • 文本框应该只需填写标签/按钮之间的多余的空间,但在更大的内容的情况下,它不应该“踢出”右边的按钮。 ..

我最后的尝试是GridView,它看起来是一种可以接受的,但不是真的。

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFF"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <GridLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Add nutrition part" 
       android:id="@+id/textView" 
       android:layout_column="0" 
       android:layout_row="0" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" /> 

      <TextView 
       android:text="Selected part" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/textView15" 
       android:layout_column="0" 
       android:layout_row="1" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:inputType="text" 
       android:text="" 
       android:enabled="false" 
       android:id="@+id/dialogMakeMealPartNutrition" 
       android:layout_column="1" 
       android:layout_row="1" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" 
       android:layout_gravity="fill_horizontal" /> 

      <Button 
       android:text="Find nutrition" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/buttonMakeMealPartFindNutrition" 
       android:layout_column="2" 
       android:layout_row="1" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" /> 

      <TextView 
       android:text="Gram" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/textView17" 
       android:layout_column="0" 
       android:layout_row="2" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" /> 

      <EditText 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:inputType="numberDecimal" 
       android:id="@+id/dialogMakeMealPartGram" 
       android:layout_column="1" 
       android:layout_row="2" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" 
       android:layout_gravity="fill_horizontal" /> 

      <Button 
       android:text="Abort" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/dialogMakeMealPartButtonAbort" 
       android:layout_column="0" 
       android:layout_row="3" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" /> 

      <Button 
       android:text="Add" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/dialogMakeMealPartButtonAdd" 
       android:layout_column="1" 
       android:layout_row="3" 
       android:layout_columnSpan="1" 
       android:layout_rowSpan="1" /> 

     </GridLayout> 

    </ScrollView> 

</RelativeLayout> 

编辑:

的ConstraintLayout她对我的目的相当不错的工作 - 感谢很好的提示卢卡:

Task description

代码现在看起来是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="#FFFFFF"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.constraint.ConstraintLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:text="Add nutrition part" 
       android:id="@+id/headline" 
       app:layout_constraintEnd_toEndOf="parent" 
       app:layout_constraintStart_toStartOf="parent" 
       app:layout_constraintTop_toTopOf="parent" /> 

      <TextView 
       android:text="Selected part" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/textView15" 
       app:layout_constraintStart_toStartOf="parent" 
       app:layout_constraintTop_toTopOf="@+id/buttonMakeMealPartFindNutrition" /> 

      <EditText 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:inputType="text" 
       android:text="" 
       android:enabled="false" 
       android:id="@+id/dialogMakeMealPartNutrition" 
       app:layout_constraintStart_toEndOf="@+id/textView15" 
       app:layout_constraintEnd_toStartOf="@+id/buttonMakeMealPartFindNutrition" 
       app:layout_constraintTop_toTopOf="@+id/buttonMakeMealPartFindNutrition" /> 

      <Button 
       android:text="Find nutrition" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/buttonMakeMealPartFindNutrition" 
       app:layout_constraintTop_toBottomOf="@+id/headline" 
       app:layout_constraintStart_toEndOf="@+id/dialogMakeMealPartNutrition" 
       app:layout_constraintEnd_toEndOf="parent" /> 

      <TextView 
       android:text="Gram" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/textView17" 
       app:layout_constraintStart_toStartOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/dialogMakeMealPartNutrition" /> 

      <EditText 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:inputType="numberDecimal" 
       android:id="@+id/dialogMakeMealPartGram" 
       app:layout_constraintStart_toStartOf="@+id/dialogMakeMealPartNutrition" 
       app:layout_constraintEnd_toEndOf="@+id/dialogMakeMealPartNutrition" 
       app:layout_constraintTop_toBottomOf="@+id/dialogMakeMealPartNutrition" /> 

      <Button 
       android:text="Abort" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/dialogMakeMealPartButtonAbort" 
       app:layout_constraintStart_toStartOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/dialogMakeMealPartGram" /> 

      <Button 
       android:text="Add" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/dialogMakeMealPartButtonAdd" 
       app:layout_constraintStart_toEndOf="@+id/dialogMakeMealPartButtonAbort" 
       app:layout_constraintTop_toBottomOf="@+id/dialogMakeMealPartGram" /> 

     </android.support.constraint.ConstraintLayout> 

    </ScrollView> 

</RelativeLayout> 
+0

您使用的网格布局或任何其他 – Raj

+0

没有,didtn工作实现目标(或我不知道怎么样,我猜),我尝试了网格布局,但这个按钮是滚动出来的,我不能让文本框填充剩余空间 – Leorekk

+0

'...只填充剩余空间'然后使用'match_parent'而不是'wrap_content' –

回答

0

你可以使用一个ConstraintLayout来实现这个,here你可以找到它的解释。

您的布局文件应该是这样的:

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="Add nutrition part" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent"/> 

    <TextView 
     android:id="@+id/textView15" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Selected part" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView"/> 

    <EditText 
     android:id="@+id/dialogMakeMealPartNutrition" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:enabled="false" 
     android:inputType="text" 
     app:layout_constraintStart_toEndOf="@+id/textView15" 
     app:layout_constraintEnd_toStartOf="@+id/buttonMakeMealPartFindNutrition" 
     app:layout_constraintTop_toBottomOf="@+id/textView" 
     android:text=""/> 

    <Button 
     android:id="@+id/buttonMakeMealPartFindNutrition" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toBottomOf="@+id/textView" 
     app:layout_constraintStart_toEndOf="@+id/dialogMakeMealPartNutrition" 
     app:layout_constraintEnd_toEndOf="parent" 
     android:text="Find nutrition"/> 

    ... 

</android.support.constraint.ConstraintLayout>