如何在右侧显示 android 复选框?

默认情况下,android 复选框显示 右侧为文本,左侧为复选框
我希望在右侧显示复选框,在左侧显示文本

我该怎么做呢?

124198 次浏览

我想不出一种样式化的方法,但是您可以将复选框的文本设置为空,然后在复选框的左侧放置一个 TextView,其中包含您想要的文本。

我认为现在回答这个问题为时已晚,但实际上有一种方法可以实现你的目标。您只需要在复选框中添加以下代码行:

android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"

您也可以使用自定义的复选框绘图。

对于无线电按钮:

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 并将其添加到根视图。

CheckBox cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null);
rootView.addView(cb);

此外,从 Hazhir 输入来看,这个问题需要在复选框 xml 配置 android 中注入该属性: paddingLeft = “0dp”,这是为了避免复选框左侧的空白。

复选框文本可能没有向左对齐

android:button="@null"
android:drawableRight="@android:drawable/btn_radio"

可以使用 CheckedTextView作为替代品来避免这个问题,

<CheckedTextView
...
android:checkMark="@android:drawable/btn_radio" />

这个链接会很有帮助: 左对齐文本,右对齐复选框

抄下来:

    <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 视图对象。

设置背景以获得连锁反应。

[链接到网站的右侧和左侧的示例复选框。][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" />

Xml 示例 checkline.xml (在可绘制版本中,请参见动画版本的链接,在可绘制版本 -v21中)

透明的 _ ripple.xml 示例(在 draable-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>


示例 arency _ ripple.xml (在可绘制中,只突出显示没有涟漪可用

<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>

您可以添加 android:layoutDirection="rtl",但它只能在 API 17中使用。

正如@The Berga 建议的那样,你可以添加 android:layoutDirection="rtl",但它只能在 API 17中使用。
对于动态实现,这里是 < br/>

chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

如果不强制使用 CheckBox,那么可以使用 Switch。Switch 默认情况下显示左侧的文本。

你可以的

<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="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>

为这个问题添加另一个使用 CheckedTextView 的答案。它还可以选择将自定义图像用于复选框。并且可以在单个视图中完成

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"/>
    <android.support.v7.widget.AppCompatCheckBox
android:id="@+id/checkBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layoutDirection="rtl"
android:text="text" />`

你也可以用这个,

<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="rtl"
android:drawablePadding="@dimen/padding_5"
android:drawableEnd="@drawable/ic_english"
android:button="@drawable/language_selector"/>

我使用的最简单的解决方案是:

checkBox.setLayoutDirection(getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);

提示:

如果你想把 CheckBox放在右边,那么文本最好从左到右,比如英语、西班牙语和意大利语。

此外,如果你想使 CheckBox在左侧,这样文本是更好的从右到左,如阿拉伯语,希伯来语和波斯语。