Android:如何将CheckBox文本对齐到底部?

12

基本上我想要的是一个带有图标和图标下方文本的复选框,就像这样:

 -------------------
|   CheckBox Icon   |
|                   |
|   CheckBox Text   |
|                   |
 -------------------

默认情况下,图标位于左侧,文本位于右侧,两者处于相同的级别。下面是我正在使用的布局:

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Switch state"
    android:button="@drawable/my_custom_selector" />

有什么方法可以让图标在上方,文字在下方?提前致谢 :)


请问您能否将您布局中的XML代码张贴出来? - IAmTheSquidward
@IAmTheSquidward 请查看我的更新 ;) - Androider
我曾经遇到过同样的问题,但是通过使用这个方法,我已经解决了它。 - MohamedHarmoush
5个回答

21

我曾经有同样的问题,通过以下方法解决了:

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

7

使用具有选中和未选中图形的状态列表的CheckedTextView:

<CheckedTextView
    android:drawableTop="@drawable/checkmark"
    android:checked="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Checked text"/>

@drawable/checkmark

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/unchecked" android:state_checked="false"></item>
<item android:drawable="@drawable/checked"></item></selector>
<检查标记.xml已经简化。>

1
你可以将LinearLayout设置为垂直方向,将没有文本的CheckBox放在顶部,然后将文本放在下面的TextView中。
最后,将LinearLayout 可点击并通过编程方式进行选中/取消选中。

1
我刚刚使用了线性布局(垂直)制作了它,因为我没有使用任何自定义复选框XML。我的情况就像一个文本在复选框上方。
 <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                >
                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="15dp"
                    android:layout_height="15dp"
                    android:text="text1"
                    android:layout_gravity="center"
                    android:textSize="15dp"/>
                <CheckBox android:id="@+id/textcheckbox"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:onClick="onCheckboxClicked"/>
            </androidx.appcompat.widget.LinearLayoutCompat>

0

以上解决方案对我无效。缺少的是其中的Kotlin/Java代码。

因此,请在您的Kotlin代码中添加它。

cb_twitter.setOnClickListener({
            (it as CheckedTextView).toggle()
        })

这是我的XML代码:

<CheckedTextView
    android:id="@+id/cb_twitter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:checked="false"
    android:drawableTop="@drawable/checkbox_selector_twitter"
    android:gravity="center_horizontal"
    android:text="@string/Twitter"
    android:textAlignment="gravity"/>

这里我也通过以下方式将文本居中

android:gravity="center_horizontal"
android:textAlignment="gravity"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接