Можно ли создать горизонтальную радиогруппу с радиокнопками, в которой каждая кнопка содержит радио, значок и текст, а эти три элемента выровнены по центру по вертикали ?
Я пытался установить gravity
и layout_gravity
для RadioGroup
и RadioButtons
, а также layout_weight
для каждой кнопки и т. Д., Но безрезультатно.ПОЧЕМУ это так сложно на Android?
^ Я хочу, чтобы переключатели были в центре значков и заголовков.
Мне нужна возможность выбора всей области, поэтому Мне бы очень хотелось установить значок и текстовые значения RadioButton , а не добавлять отдельные ImageViews в пользовательский интерфейс.Я хочу использовать RadioGroup, потому что я использую это в пользовательском элементе Preference
, поэтому выбор и сохранение обрабатываются для меня хорошо.
Вот 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:id="@android:id/widget_frame"
style="@style/AppTheme"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"
android:theme="@style/AppTheme"
tools:context=".settings.homeScreenPreference">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:text="@string/set_home_screen" />
<!--Settings icon-->
<ImageView
android:id="@+id/settingsIcon"
android:layout_width="0dp"
android:layout_height="80dp"
android:contentDescription="@string/settings_icon_description"
android:drawable="@drawable/ic_settings"
android:tint="@color/colorAccent"
app:layout_constraintBottom_toTopOf="@id/settingsTitle"
app:layout_constraintEnd_toStartOf="@+id/diidsIcon"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title"
tools:srcCompat="@drawable/ic_settings" />
<!--Cards icon-->
<ImageView
android:id="@+id/diidsIcon"
android:layout_width="0dp"
android:layout_height="80dp"
android:contentDescription="@string/my_cards_icon_description"
android:drawable="@drawable/ic_my_cards"
android:tint="@color/colorAccent"
app:layout_constraintBottom_toTopOf="@id/home_screen_radio_group"
app:layout_constraintEnd_toStartOf="@+id/scannerIcon"
app:layout_constraintStart_toEndOf="@+id/settingsIcon"
app:layout_constraintTop_toBottomOf="@id/title"
tools:srcCompat="@drawable/ic_my_cards" />
<!--Scanner icon-->
<ImageView
android:id="@+id/scannerIcon"
android:layout_width="0dp"
android:layout_height="80dp"
android:contentDescription="@string/scanner_icon_description"
android:drawable="@drawable/ic_scan_qr"
android:tint="@color/colorAccent"
app:layout_constraintBottom_toTopOf="@id/home_screen_radio_group"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/diidsIcon"
app:layout_constraintTop_toBottomOf="@id/title"
tools:srcCompat="@drawable/ic_scan_qr" />
<!--Settings title-->
<TextView
android:id="@+id/settingsTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/settings"
android:textAlignment="center"
android:textColor="@color/colorAccent"
app:layout_constraintBottom_toTopOf="@id/home_screen_radio_group"
app:layout_constraintEnd_toStartOf="@+id/diidsTitle"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/settingsIcon" />
<!--Cards title-->
<TextView
android:id="@+id/diidsTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/my_cards"
android:textAlignment="center"
android:textColor="@color/colorAccent"
app:layout_constraintBottom_toTopOf="@id/home_screen_radio_group"
app:layout_constraintEnd_toStartOf="@+id/scannerTitle"
app:layout_constraintStart_toEndOf="@+id/settingsTitle"
app:layout_constraintTop_toBottomOf="@id/diidsIcon" />
<!--Scanner title-->
<TextView
android:id="@+id/scannerTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/scan_code"
android:textAlignment="center"
android:textColor="@color/colorAccent"
app:layout_constraintBottom_toTopOf="@id/home_screen_radio_group"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/diidsTitle"
app:layout_constraintTop_toBottomOf="@id/scannerIcon" />
<!--Radio group-->
<RadioGroup
android:id="@+id/home_screen_radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/colorPrimaryDark"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintTop_toBottomOf="@id/settingsTitle">
<!--Settings radio-->
<RadioButton
android:id="@+id/settingsButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:buttonTint="@color/colorAccent" />
<!--Cards radio-->
<RadioButton
android:id="@+id/diidsButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:buttonTint="@color/colorAccent" />
<!--Scanner radio-->
<RadioButton
android:id="@+id/scannerButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:buttonTint="@color/colorAccent"/>
</RadioGroup>
</android.support.constraint.ConstraintLayout>