Android:在 XML 中设置表单
Android: Setting up a form in XML
我在使用与 activity class 关联的 LinearLayout 设置表单时遇到了一些麻烦。我所有的 EditText 和 TextView 都在屏幕顶部的一行中组合在一起。如何在这些项目之间添加换行符?
这是我的 activity class 的 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_detail"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/detailEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dateLabel"
android:textStyle="bold"
android:padding="10dp"
android:textSize="20sp"
android:gravity="top|left"
android:textIsSelectable="false" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/timeLabel"
android:textStyle="bold"
android:padding="10dp"
android:textSize="20sp"
android:gravity="top|right"
android:textIsSelectable="false" />
<Spinner
android:id="@+id/PrioritySelect"
android:layout_height="wrap_content"
android:prompt="@string/priority"
android:layout_width="fill_parent"
android:entries="@array/prioritylist">
</Spinner>
</LinearLayout>
</LinearLayout>
将您的布局 android:orientation="horizontal" 更改为 android:orientation="vertical",它将起作用。
我首先想到的是 - 将 LinearLayout 的方向设置为垂直。如果你仍然想要当前布局的分隔线,你可以在每个视图之间使用一个宽度为 1dp 的按钮-
<Button
android:background="#000"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="1dp"
android:layout_height="30dp" />
在 LinearLayout 中有一个默认样式用于显示每个项目之间的换行符。 (API 11+)
如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
style="?android:buttonBarStyle">
<TextView style="?android:buttonBarButtonStyle"
... />
<TextView style="?android:buttonBarButtonStyle"
... />
<TextView style="?android:buttonBarButtonStyle"
... />
</LinearLayout>
或自定义方式:
drawable/vertical_divider.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="@dimen/your_custom_height" />
<solid android:color="@color/your_custom_color" />
</shape>
layouts/activity_xxx.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="@drawable/vertical_divider"
or use the system one below
android:divider="?android:attr/listDivider"
android:dividerPadding="8dp"
android:showDividers="middle">
<TextView ... />
<TextView ... />
<TextView ... />
</LinearLayout>
或者您可以在代码中执行此操作:
mLinearLayout.setDividerDrawable(customDividerDrawable);
mLinearLayout.setDividerPadding(customPadding);
mLinearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
我在使用与 activity class 关联的 LinearLayout 设置表单时遇到了一些麻烦。我所有的 EditText 和 TextView 都在屏幕顶部的一行中组合在一起。如何在这些项目之间添加换行符?
这是我的 activity class 的 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_detail"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/detailEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dateLabel"
android:textStyle="bold"
android:padding="10dp"
android:textSize="20sp"
android:gravity="top|left"
android:textIsSelectable="false" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/timeLabel"
android:textStyle="bold"
android:padding="10dp"
android:textSize="20sp"
android:gravity="top|right"
android:textIsSelectable="false" />
<Spinner
android:id="@+id/PrioritySelect"
android:layout_height="wrap_content"
android:prompt="@string/priority"
android:layout_width="fill_parent"
android:entries="@array/prioritylist">
</Spinner>
</LinearLayout>
</LinearLayout>
将您的布局 android:orientation="horizontal" 更改为 android:orientation="vertical",它将起作用。
我首先想到的是 - 将 LinearLayout 的方向设置为垂直。如果你仍然想要当前布局的分隔线,你可以在每个视图之间使用一个宽度为 1dp 的按钮-
<Button
android:background="#000"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="1dp"
android:layout_height="30dp" />
在 LinearLayout 中有一个默认样式用于显示每个项目之间的换行符。 (API 11+)
如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
style="?android:buttonBarStyle">
<TextView style="?android:buttonBarButtonStyle"
... />
<TextView style="?android:buttonBarButtonStyle"
... />
<TextView style="?android:buttonBarButtonStyle"
... />
</LinearLayout>
或自定义方式:
drawable/vertical_divider.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="@dimen/your_custom_height" />
<solid android:color="@color/your_custom_color" />
</shape>
layouts/activity_xxx.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="@drawable/vertical_divider"
or use the system one below
android:divider="?android:attr/listDivider"
android:dividerPadding="8dp"
android:showDividers="middle">
<TextView ... />
<TextView ... />
<TextView ... />
</LinearLayout>
或者您可以在代码中执行此操作:
mLinearLayout.setDividerDrawable(customDividerDrawable);
mLinearLayout.setDividerPadding(customPadding);
mLinearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);