5

我可以解释它,但我认为一张图片比文字更能解释我的问题:

例子

这是我的布局。

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

<include
    android:id="@+id/include1"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    layout="@layout/action_bar" />


<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="top"
    android:padding="8dip" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center" >

            <Button
                android:id="@+id/button1"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="This is a short text" />

            <Button
                android:id="@+id/button2"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="This is a long text to show how the button is moved when it has a long text on it" />
        </TableRow>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/button3"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="Button" />

            <Button
                android:id="@+id/button4"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="Button" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>

4

3 回答 3

12

我遇到过同样的问题。原因是,默认值为baselineAlignedtrue因此按钮被向下移动以使文本位于同一基线上。将 LinearLayout 上的值设置为false解决问题。

android:baselineAligned="false"
于 2013-04-24T07:11:23.977 回答
2

如果文本太长,您的理想情况是什么?

尝试添加:

android:maxLines:"1"

到按钮。

编辑:我不知道究竟是什么导致了您看到的问题,但这里有一种更简单的方法来构建您的布局,似乎可以解决您在我的设备上运行时遇到的问题。

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




<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="top"
    android:padding="8dip" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >



            <Button
                android:id="@+id/button1"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="This is a short text" />

            <Button
                android:id="@+id/button2"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="This is a long text to show how the button is moved when it has a long text on it" 
                android:layout_toRightOf="@id/button1"/>




            <Button
                android:id="@+id/button3"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="Button" 
                android:layout_below="@id/button1"/>

            <Button
                android:id="@+id/button4"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="Button" 
                android:layout_below="@id/button1"
                android:layout_toRightOf="@id/button1"/>

    </RelativeLayout>
</ScrollView>

</LinearLayout>
于 2012-06-06T00:06:54.097 回答
0

试试这个:

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

<include 
android:id="@+id/include1" 
android:layout_width="fill_parent" 
android:layout_height="0dp" 
android:layout_weight="1" 
layout="@layout/action_bar" /> 

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="top"
    android:padding="8dip" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center" >

            <RelativeLayout >

                <Button
                    android:id="@+id/button1"
                    android:layout_width="150dip"
                    android:layout_height="150dip"
                    android:text="This is a short text" />

                <Button
                    android:id="@+id/button2"
                    android:layout_width="150dip"
                    android:layout_height="150dip"
                    android:layout_toRightOf="@id/button1"
                    android:text="This is a long text to show how the button is moved when it has a long text on it" />
            </RelativeLayout>
        </TableRow>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/button3"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="Button" />

            <Button
                android:id="@+id/button4"
                android:layout_width="150dip"
                android:layout_height="150dip"
                android:text="Button" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>

添加</LinearLayout>最后一行。它没有显示在代码中。它必须工作......

于 2012-06-06T00:17:49.403 回答