0

我遇到的问题是,当我单击下面 xml 中显示的按钮之一时,按钮上的文本会跳下一行。因此,如果按钮为 1 行,则不显示任何文本。如果按钮是 2 行,则在按钮的底部仅显示第一行。

onClick 方法中的任何内容都不会更改布局。

继承人的XML

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


    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"  >

.. a few other layouts and controls that works fine 



        <TableLayout
                android:id="@+id/tableLayout276"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <TableRow
                    android:id="@+id/TableRow10"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left"
                    android:gravity="center"
                    android:orientation="vertical" >



                    <Button
                        android:id="@+id/BtnRet"
                        android:layout_width="120dp"
                        android:layout_height="wrap_content"
                        android:text="Ret"
                        android:gravity="center"
                        android:textSize="18dp" />      

                    <Button
                        android:id="@+id/BtnVisningsType"
                        android:layout_width="120dp"
                        android:layout_height="wrap_content"
                        android:text="Decimaltal"
                        android:gravity="center"
                        android:textSize="18dp" />

                    <Button
                        android:id="@+id/BtnFunktioner"
                        android:layout_width="120dp"
                        android:layout_height="wrap_content"
                        android:text="Funktioner"
                        android:gravity="center"
                        android:textSize="18dp" />      
            </TableRow>
        </TableLayout>

.. a few other layouts and controls that works fine


</LinearLayout>
</ScrollView>
</LinearLayout>

现在,如果我将按钮上的 layout_width 更改为 wrap_content,一切正常(从更改 textview 时得到的想法,textview 下方按钮上的文本向下移动。帮助!) - 除了按钮现在显然没有相同宽度,看起来很乱。

有谁知道为什么会发生这种情况,以及我如何既保留文本又决定按钮的大小?

4

1 回答 1

2

这增加了布局的复杂性,但可能是一个解决方案。

将 LinearLayout 添加到表格行并使用权重来控制按钮的精确布局。像这样的东西:

<TableRow
                android:id="@+id/TableRow10"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:gravity="center"
                android:orientation="vertical" >

    <LinearLayout android:layout_height="match_parent"
                  android:layout_width="match_parent"
                  android:weightSum="3"
                  android:orientation="horizantal"/>

                <Button
                    android:id="@+id/BtnRet"
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="Ret"
                    android:gravity="center"
                    android:textSize="18dp" />      

                <Button
                    android:id="@+id/BtnVisningsType"
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="Decimaltal"
                    android:gravity="center"
                    android:textSize="18dp" />

                <Button
                    android:id="@+id/BtnFunktioner"
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:text="Funktioner"
                    android:gravity="center"
                    android:textSize="18dp" />      

    </LinearLayout>

</TableRow>

注意事项:

  • 可能会影响性能
  • 凭记忆输入,如有错别字请见谅
  • 未测试
  • 使用填充/边距来调整精确的大小

一个 RelativeLayout 也可能工作。

于 2012-11-07T11:03:19.620 回答