Android与iOS:为Android上的非偏好设置屏幕创建类似偏好设置的布局

时间:2018-10-08 06:41:06

标签: android android-layout android-preferences

我来自iOS开发,我们拥有UITableViewCell,非常适合制作垂直的内容列表。单元格包含一个主标签和一个辅助标签以及一个图标。

我一直在Android上寻找类似的东西,而“偏好设置”似乎恰恰给了我想要的东西。当我在Android中创建首选项页面时,从XML创建美观的布局确实很容易。使用以下简单的XML代码,我可以获得项目的垂直列表(如iOS中的UITableView),该项目的左侧有一个漂亮的图标,右侧(一个开关)有一个用户界面元素,一个正确的大小和对齐的标题,以及当我点击首选项时的漂亮动画。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <SwitchPreference
        android:key="setting_toggle"
        android:title="@string/setting_toggle"
        android:icon="@drawable/setting_toggle"
        android:defaultValue="true" />
    <SwitchPreference
        android:key="setting_toggle2"
        android:title="@string/setting_toggle2"
        android:icon="@drawable/setting_toggle2"
        android:defaultValue="true" />
</PreferenceScreen>

但是,如果我想在“首选项”之外使用类似的布局(在我的情况下,对于链接到其他页面的菜单屏幕),要获得这样一个简单的布局似乎要困难得多。我试图用TableLayout做到这一点:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="1">
    <TableRow
        android:id="@+id/button_1"
        android:background="?android:attr/selectableItemBackground"
        android:clickable="true"
        android:focusable="true">
        <TextView
            android:text="@string/tablerow_1"
            android:textSize="15sp"
            android:textStyle="bold"
            android:gravity="center_vertical"
            android:paddingStart="12dp"
            android:paddingEnd="0dp"
            android:layout_height="70dp"
            android:padding="3dip" />
    </TableRow>
</TableLayout>

这将实现点按动画并垂直居中显示文本。但是,我的目标是模仿首选项页面的外观,因此还有很长的路要走:

  1. 文本视图的默认字体与首选项的默认字体不同。
  2. 默认行大小不同。
  3. 文本视图和表格行元素上都没有图标属性。
  4. 没有一种简单的方法可以在右侧放置另一个元素(例如开关或辅助文本视图)

我很难相信Android会创建一个易于使用的API(例如Preferences),然后使其仅在许多有用的情况下可用。那么,我想念什么?是否有我不知道的,更广泛使用的类似首选项的API,还是我应该仅对诸如菜单之类的非首选项屏幕使用“首选项” API?

1 个答案:

答案 0 :(得分:1)

您应将ListViewRecyclerView用于自定义视图。

  1. 您必须在活动/片段布局中声明ListView
  2. 您必须在定义行的地方创建xml布局。
  3. 您必须创建一个适配器才能将数据插入到ListView中。

有关更多信息,请查看http://developer.android.com/resources/tutorials/views/hello-listview.html