【发布时间】:2018-10-08 14:55:58
【问题描述】:
我来自 iOS 开发部门,我们有 UITableViewCell,它非常适合制作垂直的内容列表。一个单元格包含一个主要和次要标签以及一个图标。
我一直在 Android 上寻找类似的东西,而且 Preferences 似乎给了我我想要的东西。当我在 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>
但是,如果我想在 Preferences 之外使用类似的布局(在我的例子中,对于链接到其他页面的菜单屏幕),获得这样一个简单的布局似乎要困难得多。我试图用 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>
这实现了点击动画并使文本垂直居中。但是,我的目标是模仿偏好页面的外观,所以还有很长的路要走:
- 文本视图的默认字体与首选项的默认字体不同。
- 默认行大小不同。
- 文本视图和表格行元素上没有图标属性。
- 没有一种简单的方法可以将另一个元素放在右侧(如开关或辅助文本视图)
我很难相信 Android 会创建一个像 Preferences 这样易于使用的 API,然后只在许多有用的情况下使用它。那么,我错过了什么?是否有我不知道的更广泛使用的类似首选项的 API,或者我应该只将 Preferences API 用于菜单等非首选项屏幕?
【问题讨论】:
-
您缺少 ListView 和 RecyclerView。 TableLayout 是一个罕见的用例——它应该只用于相对较小的列数据表。以上两个更相当于iOS的UiTableView。
标签: android android-layout android-preferences