Как показать Android флажок на правой стороне?
по умолчанию android флажок показывает
текст справа и флажок слева
Я хочу показать флажок справа с текстом слева
Как мне этого добиться?
13 ответов:
Я не могу придумать способ с помощью стиля, но вы можете просто установить текст флажка в ничто и поместить TextView слева от флажка с нужным текстом.
Я думаю, что уже слишком поздно отвечать на этот вопрос, но на самом деле есть способ достичь своей цели. Вам просто нужно добавить следующую строку в свой флажок:
android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
вы также можете использовать свой настроенный drawable для флажка.
а для радиобуттона:
android:button="@null" android:drawableRight="@android:drawable/btn_radio"
и если вы хотите сделать это программно:
определите макет и назовите его RightCheckBox и скопируйте следующие строки:
<?xml version="1.0" encoding="utf-8"?> <CheckBox xmlns:android="http://schemas.android.com/apk/res/android" android:text="hello" android:layout_width="match_parent" android:layout_height="match_parent" android:button="@null" android:drawableRight="?android:attr/listChoiceIndicatorMultiple"/>
и когда вам нужно добавьте его программно вам просто нужно надуть его до флажка и добавить его в корневое представление.
CheckBox cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null); rootView.addView(cb);
можно сделать
<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right|center"//or "center_vertical" for center text android:layoutDirection="rtl" android:text="hello" />
достаточно следующей строки
android:layoutDirection="rtl"
просто скопируйте это:
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Your text:"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" /> </LinearLayout>
счастливый разыгрываешь! :)
текст флажка может не совпадать слева с
android:button="@null" android:drawableRight="@android:drawable/btn_radio"
в каком-то устройстве. Можно использовать CheckedTextView в качестве замены, чтобы избежать проблем,
<CheckedTextView ... android:checkMark="@android:drawable/btn_radio" />
а эта ссылка будет полезна: выровнять текст влево, флажок вправо
вы можете использовать checkedTextView вместо этого.
http://developer.android.com/reference/android/widget/CheckedTextView.html
как предложил @The Berga вы можете добавить
android:layoutDirection="rtl"
но он доступен только с API 17.
для динамической реализации, вот он идетchkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
кроме того, из hazhir imput, для этой проблемы необходимо ввести это свойство в флажок xml configuration android: paddingLeft="0dp", это для того, чтобы избежать пустого места в левой части флажка.
добавление другого ответа на этот вопрос, который использует CheckedTextView, если кто-то пытается сделать это программно. Он также имеет возможность использовать пользовательские изображения для checkbox. И может быть сделано в одном окне
final CheckedTextView checkBox = new CheckedTextView(getApplicationContext()); checkBox.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); checkBox.setId(1); checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background); checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (checkBox.isChecked()){ checkBox.setChecked(false); checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background); }else{ checkBox.setChecked(true); checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_on_background); } } }); checkBox.setTextColor(Color.BLACK); checkBox.setGravity(Gravity.LEFT); checkBox.setText("hi");
из XML, если вы хотите начать -
<CheckedTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:checkMark="@android:drawable/checkbox_off_background" android:checked="false" android:text="Hi from xml"/>
следующая ссылка демонстрирует, как отобразить seveveral стандартные объекты Android view с анимированным флажком справа, установив правильный drawable.
установить фон, чтобы получить эффект.
[ссылка на сайт с примером флажок на правой и левой стороне.][1] http://landenlabs.com/android/uicomponents/uicomponents.html#checkbox
<Button android:id="@+id/p2Button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/transparent_ripple" android:drawableRight="@drawable/checkline" android:gravity="left|center_vertical" android:text="Button" android:textAllCaps="false" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <android.support.v7.widget.AppCompatButton android:id="@+id/p2Button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/transparent_ripple" android:drawableRight="@drawable/checkline" android:gravity="left|center_vertical" android:text="AppCompatButton" android:textAllCaps="false" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <TextView android:id="@+id/p2TextView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/transparent_ripple" android:drawableRight="@drawable/checkline" android:gravity="left|center_vertical" android:hapticFeedbackEnabled="true" android:text="TextView" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <android.support.v7.widget.AppCompatTextView android:id="@+id/p2TextView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/transparent_ripple" android:drawableRight="@drawable/checkline" android:gravity="left|center_vertical" android:hapticFeedbackEnabled="true" android:text="AppCompatTextView" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/white" /> <CheckBox android:id="@+id/p2Checkbox1" android:layout_width="match_parent" android:layout_height="@dimen/buttonHeight" android:background="@drawable/transparent_ripple" android:button="@null" android:checked="true" android:drawableRight="@drawable/checkline" android:gravity="left|center_vertical" android:text="CheckBox" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <android.support.v7.widget.AppCompatCheckBox android:id="@+id/p2Checkbox2" android:layout_width="match_parent" android:layout_height="@dimen/buttonHeight" android:background="@drawable/transparent_ripple" android:button="@null" android:checked="true" android:drawableRight="@drawable/checkline" android:gravity="left|center_vertical" android:text="AppCompatCheckBox" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <android.support.v7.widget.AppCompatCheckedTextView android:id="@+id/p2Checkbox3" android:layout_width="match_parent" android:layout_height="@dimen/buttonHeight" android:background="@drawable/transparent_ripple" android:checkMark="@drawable/checkline" android:checked="true" android:gravity="left|center_vertical" android:text="AppCompatCheckedTextView" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <!-- android:checkMark="?android:attr/listChoiceIndicatorMultiple" --> <CheckedTextView android:id="@+id/p2Checkbox4" android:layout_width="match_parent" android:layout_height="@dimen/buttonHeight" android:background="@drawable/transparent_ripple" android:checkMark="@drawable/checkline" android:checked="true" android:gravity="left|center_vertical" android:text="CheckedTextView" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <CheckBox android:id="@+id/p2Checkbox5" android:layout_width="match_parent" android:layout_height="@dimen/buttonHeight" android:background="@drawable/transparent_ripple" android:checked="true" android:gravity="center_vertical|end" android:text="CheckBox" android:textColor="@android:color/white" android:textSize="@dimen/buttonTextSize" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/white" /> <ToggleButton android:id="@+id/p2ToggleButton1" android:layout_width="match_parent" android:layout_height="@dimen/buttonHeight" android:background="@drawable/transparent_ripple" android:checked="true" android:drawableRight="@drawable/checkline" android:gravity="center_vertical|left" android:textAllCaps="false" android:textColor="@android:color/white" android:textOff="ToggleButtonOff" android:textOn="ToggleButtonOn" android:textSize="@dimen/buttonTextSize" /> <ToggleButton android:id="@+id/p2ToggleButton2" android:layout_width="match_parent" android:layout_height="@dimen/buttonHeight" android:background="@drawable/transparent_ripple" android:checked="true" android:drawableRight="@drawable/btn_check_material_anim" android:gravity="center_vertical|left" android:textAllCaps="false" android:textColor="@android:color/white" android:textOff="ToggleBtnnAnimOff" android:textOn="ToggleBtnnAnimOn" android:textSize="@dimen/buttonTextSize" />
образец checkline.xml (в drawable, см. ссылку для анимации версия в drawable-v21)
образец transparent_ripple.xml (в drawable-v21)
<!-- Limit ripple to view object, can also use shape such as oval --> <item android:id="@android:id/mask" android:drawable="@android:color/white" /> <item> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="200" android:exitFadeDuration="200"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <solid android:color="#80c0c000" /> </shape> </item> </selector> </item>
образец transparent_ripple.xml (в drawable, выделите только отсутствие пульсации
<item android:state_pressed="true"> <shape android:shape="rectangle"> <solid android:color="#80c0c000" /> </shape> </item> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent" /> </shape> </item>
Если не обязательно использовать
CheckBox
вы могли бы просто использоватьSwitch
вместо. По умолчанию переключатель отображает текст на левой стороне.
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/location_permissions" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textColor="@android:color/black" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <CheckBox android:id="@+id/location_permission_checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="8dp" android:onClick="onLocationPermissionClicked" /> </RelativeLayout> </LinearLayout>