Android 以编程方式更改按钮上的文本

Android changing text on buttons programatically

我正在制作一个 4 宽、9 高的按钮网格,所有按钮都是不可见的并且上面没有文本,然后我以编程方式向它们添加文本并使它们可见(基本上我使用的是不可见按钮,因为由于使它们可见的代码,36 个按钮中的任何一个都可以变得可见(它基于我正在解析的 XML 文档)我正在使用 LinearLayout 来执行此操作,所以我有一个 Vertical LinearLayout,包裹在 9 Horizo​​ntal每个有 4 个按钮的 LinearLayouts,它们都有 wrap_content 高度、宽度和重量 1(不确定这是否会导致问题,因为我还不完全确定这些参数是如何工作的)。

我的问题是,一旦我开始添加文本,文本可能有不同的长度,所以我的按钮最终会变成奇怪的形状,有些比其他的更宽或更高,有什么办法可以做到这一点一种意味着它们最终都会有相似尺寸的方式?还是我的隐形按钮会把事情搞砸?或者有更好的方法来做我正在做的事情吗?

我担心使用固定大小的按钮,因为我认为如果文本太长会导致问题。

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<LinearLayout
    android:orientation="vertical"
    android:id="@+id/soulOneLL"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_gravity="center"
        android:layout_height="wrap_content">


        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="soulOne"
            android:text="@string/SoulOne"
            android:id="@+id/btnSoul1" />

    </LinearLayout>
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    <Button
        android:layout_width="wrap_content"
        android:layout_weight="1"
        android:visibility="invisible"
        android:layout_height="wrap_content"
        android:onClick="soulOneRowColumn"
        android:id="@+id/btnSoulOnRow8Column0" />

        <Button
   android:visibility="invisible"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:onClick="soulOneRowColumn"
            android:id="@+id/btnSoulOneRow8Column1" />

        <Button
   android:visibility="invisible"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:onClick="soulOneRowColumn"
            android:id="@+id/btnSoulOneRow8Column2" />

        <Button
   android:visibility="invisible"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:onClick="soulOneRowColumn"
            android:id="@+id/btnSoulOneRow8Column3" />
        </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <Button
   android:visibility="invisible"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:onClick="soulOneRowColumn"
                android:id="@+id/btnSoulOneRow7Column0" />

            <Button
   android:visibility="invisible"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:onClick="soulOneRowColumn"
                android:id="@+id/btnSoulOneRow7Column1" />

            <Button
   android:visibility="invisible"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:onClick="soulOneRowColumn"
            android:id="@+id/btnSoulOneRow7Column2" />
            <Button
   android:visibility="invisible"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:onClick="soulOneRowColumn"
                android:id="@+id/btnSoulOneRow7Column3" />

    </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow6Column0" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow6Column1" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow6Column2" />
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow6Column3" />

            </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow5Column0" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow5Column1" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow5Column2" />
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow5Column3" />


            </LinearLayout>


            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow4Column0" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow4Column1" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow4Column2" />
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow4Column3" />

            </LinearLayout>
            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow3Column0" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow3Column1" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow3Column2" />
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow3Column3" />

            </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow2Column0" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow2Column1" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow2Column2" />
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow2Column3" />

            </LinearLayout>


            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow1Column0" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow1Column1" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow1Column2" />
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow1Column3" />

            </LinearLayout>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow0Column0" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow0Column1" />

                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow0Column2" />
                <Button
   android:visibility="invisible"
                    android:layout_width="wrap_content"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:onClick="soulOneRowColumn"
                    android:id="@+id/btnSoulOneRow0Column3" />

            </LinearLayout>


        </LinearLayout>


</ScrollView>

在每个按钮上,您可以指定一个 android:maxLength 属性和 android:maxLines 属性。这些会将文本限制在一定的大小和长度,保证它们都是相同的大小。

根据答案做出决定,前提是没有任何事情可以按照我想要的方式进行,所以我改变了它,而不是在按钮上显示文本,而是弹出一个对话框,其中包含一些信息,而不是无论如何都可以满足我的需求。