Android 窗体样式屏幕的最佳布局

Android 窗体样式屏幕的最佳布局,android,android-layout,Android,Android Layout,我想知道我是否遗漏了某些我不确定是否适合我的用例的布局 通常我会遇到一个窗体样式的屏幕,其中包含以下内容 Label Value Label Value etc.. 我可以通过将根线性布局与嵌套线性布局进行最佳对齐来实现这一点。或者做约束布局,把所有的东西链接在一起,但是要做的xml代码太多,有时很难理解。 我想我也可以使用表格布局来实现这一点 这种风格的屏幕有没有最佳实践 谢谢从技术上讲,Yout最适合用于此类屏幕,但给出的布局示例相对简单,因此您可以选择更适合的

我想知道我是否遗漏了某些我不确定是否适合我的用例的布局

通常我会遇到一个窗体样式的屏幕,其中包含以下内容

Label        Value
Label        Value
etc..
我可以通过将根线性布局与嵌套线性布局进行最佳对齐来实现这一点。或者做约束布局,把所有的东西链接在一起,但是要做的xml代码太多,有时很难理解。 我想我也可以使用表格布局来实现这一点

这种风格的屏幕有没有最佳实践


谢谢

从技术上讲,Yout最适合用于此类屏幕,但给出的布局示例相对简单,因此您可以选择更适合的视图组

Constraintlayouts平面层次结构的好处更为明显
当你重构一个包含更多嵌套的复杂布局时,你就会明白这一点。

需要注意的是,Android上的大多数表单,尤其是下面的表单,看起来都是这样的,所以你的标签/值布局在Android上可能有点不合适,但如果它适合你的用例,那么它就可以工作了。这些编辑文本具有比表格更现代的浮动标签或提示

查看此文本字段

最好的父布局将是最适合您的布局。但是,正如其他人所说,约束是最有效的,在我看来,也是最有效的

尽管如此,仍建议

要创建材质文本字段,请将TextInputLayout添加到XML布局中,并将TextInputInputText作为直接子级

也可以在父布局中使用编辑文本

<EditText
     android:id="@+id/plain_text_input"
     android:layout_height="wrap_content"
     android:layout_width="match_parent"
     android:hint="@string/hint_text"
     android:inputType="text"/>
我同意Nezih Yılmaz的观点,我认为这对你有用

当然,可以使用线性布局创建嵌套视图组,但嵌套越多,布局可能越慢,这可能会影响性能

别忘了constraintlayout是有响应性的——你只需要做一个布局,它就可以响应每一个屏幕大小

但是有这么多xml代码要做,所以不要:

您可以从“设计”选项卡构建布局,而不是编写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">


<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView5"
    app:layout_constraintEnd_toStartOf="@+id/textView2"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView6"
    app:layout_constraintEnd_toStartOf="@+id/textView10"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView" />

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView7"
    app:layout_constraintEnd_toStartOf="@+id/textView11"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView5" />

<TextView
    android:id="@+id/textView7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView8"
    app:layout_constraintEnd_toStartOf="@+id/textView12"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView6" />

<TextView
    android:id="@+id/textView8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView9"
    app:layout_constraintEnd_toStartOf="@+id/textView13"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView7" />

<TextView
    android:id="@+id/textView9"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/textView14"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView8" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView10"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView10"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView11"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView5"
    app:layout_constraintTop_toBottomOf="@+id/textView2" />

<TextView
    android:id="@+id/textView11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView12"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView6"
    app:layout_constraintTop_toBottomOf="@+id/textView10" />

<TextView
    android:id="@+id/textView12"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView13"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView7"
    app:layout_constraintTop_toBottomOf="@+id/textView11" />

<TextView
    android:id="@+id/textView13"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView14"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView8"
    app:layout_constraintTop_toBottomOf="@+id/textView12" />

<TextView
    android:id="@+id/textView14"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView9"
    app:layout_constraintTop_toBottomOf="@+id/textView13" />

</android.support.constraint.ConstraintLayout>
<?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">


<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView5"
    app:layout_constraintEnd_toStartOf="@+id/textView2"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView6"
    app:layout_constraintEnd_toStartOf="@+id/textView10"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView" />

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView7"
    app:layout_constraintEnd_toStartOf="@+id/textView11"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView5" />

<TextView
    android:id="@+id/textView7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView8"
    app:layout_constraintEnd_toStartOf="@+id/textView12"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView6" />

<TextView
    android:id="@+id/textView8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toTopOf="@+id/textView9"
    app:layout_constraintEnd_toStartOf="@+id/textView13"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView7" />

<TextView
    android:id="@+id/textView9"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Label"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/textView14"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView8" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView10"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView10"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView11"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView5"
    app:layout_constraintTop_toBottomOf="@+id/textView2" />

<TextView
    android:id="@+id/textView11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView12"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView6"
    app:layout_constraintTop_toBottomOf="@+id/textView10" />

<TextView
    android:id="@+id/textView12"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView13"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView7"
    app:layout_constraintTop_toBottomOf="@+id/textView11" />

<TextView
    android:id="@+id/textView13"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toTopOf="@+id/textView14"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView8"
    app:layout_constraintTop_toBottomOf="@+id/textView12" />

<TextView
    android:id="@+id/textView14"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Value"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/textView9"
    app:layout_constraintTop_toBottomOf="@+id/textView13" />

</android.support.constraint.ConstraintLayout>
 app:layout_constraintHeight_percent="0.x"
 app:layout_constraintWidth_percent="0.x"