Я пришел из разработки для iOS, где у нас есть UITableViewCell
, что отлично подходит для составления вертикальных списков контента.Ячейка содержит основной и дополнительный ярлык, а также значок.
Я искал что-то похожее на Android, и кажется, что Настройки дают мне именно то, что я хочу.Когда я создаю страницу настроек в Android, очень легко создать красивый макет из XML.Используя следующий простой XML-код, я могу получить вертикальный список элементов (например, UITableView
в iOS), который имеет красивый значок с левой стороны, элемент пользовательского интерфейса с правой стороны (переключатель), правильный размер ивыровненный заголовок и приятная анимация, когда я касаюсь предпочтения.
<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>
Это обеспечивает анимацию при нажатии и центрирует текст по вертикали.Но моя цель состоит в том, чтобы имитировать внешний вид страницы настроек, поэтому предстоит пройти долгий путь:
- Шрифт по умолчанию для текстового представления отличается от шрифта по умолчанию для предпочтения.
- Размер строки по умолчанию отличается.
- В текстовом представлении нет ни свойства значка, ни элемента строки таблицы.
- Нет простого способа поместить другой элементправая сторона (например, переключатель или вторичное текстовое представление)
Мне трудно поверить, что Android создаст простой в использовании API-интерфейс, такой как Preferences, а затем сделает его доступным только для одного измного ситуаций, где это было бы полезно.Итак, что мне не хватает?Существует ли более широко используемый API, подобный настройкам, о котором я просто не знаю, или я должен просто использовать API настроек для экранов, не связанных с настройками, таких как меню?