Android:文字大小更改时布局中断

时间:2011-08-02 08:44:03

标签: android xml layout

以下是3个按钮的android布局。它看起来不错,很好。但是,当我将按钮的单个按钮的文本大小更改为其他值时,它会破坏布局(字体大小和重力会发生变化但是)。

<LinearLayout android:weightSum="1.0"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" android:layout_marginBottom="20dp"
        android:background="#FFF">

        <Button android:id="@+id/allimagebtn" android:layout_weight=".30"
            android:layout_height="60dp"
            android:textColor="#FFF"
            android:background="@drawable/cam_red" android:text="Images" android:gravity="bottom" android:paddingLeft="10dp" android:layout_marginTop="2dp" android:paddingTop="2dp" android:layout_width="100dp" android:layout_margin="2dp"/>

        <Button android:id="@+id/button2video" android:layout_weight=".30"
            android:layout_height="60dp"
            android:background="@drawable/vid_red" android:textColor="#FFF" android:text="Video Files" android:gravity="bottom" android:textSize="12dp" android:paddingLeft="10dp" android:paddingTop="2dp" android:layout_width="100dp" android:layout_marginTop="2dp"/>

        <Button android:id="@+id/button3audio" android:layout_weight=".30"
            android:layout_height="60dp"
            android:textColor="#FFF"
            android:background="@drawable/aud_red" android:text="Audio Files" android:gravity="bottom" android:textSize="12dp" android:paddingLeft="10dp" android:paddingTop="2dp" android:layout_marginTop="2dp" android:layout_width="100dp" android:layout_margin="2dp"/>

    </LinearLayout>

<LinearLayout android:weightSum="1.0"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" android:layout_marginBottom="20dp"
    android:background="#FFF">

    <Button android:id="@+id/allimagebtn" android:layout_weight=".30"
        android:layout_height="60dp"
        android:textColor="#FFF"
        android:background="@drawable/cam_red" android:paddingLeft="10dp" android:layout_marginTop="2dp" android:paddingTop="2dp" android:layout_width="100dp" android:layout_margin="2dp" android:textSize="30dp" android:text="1" android:gravity="top"/>

    <Button android:id="@+id/button2video" android:layout_weight=".30"
        android:layout_height="60dp"
        android:background="@drawable/vid_red" android:textColor="#FFF" android:text="Video Files" android:gravity="bottom" android:textSize="12dp" android:paddingLeft="10dp" android:paddingTop="2dp" android:layout_width="100dp" android:layout_marginTop="2dp"/>

    <Button android:id="@+id/button3audio" android:layout_weight=".30"
        android:layout_height="60dp"
        android:textColor="#FFF"
        android:background="@drawable/aud_red" android:text="Audio Files" android:gravity="bottom" android:textSize="12dp" android:paddingLeft="10dp" android:paddingTop="2dp" android:layout_marginTop="2dp" android:layout_width="100dp" android:layout_margin="2dp"/>

</LinearLayout>

图像 ![在此处输入图像说明] [1]![在此处输入图像说明] [2]

如何避免这种情况?

感谢您的时间。

http://imageshack.us/photo/my-images/35/beforeff.png/

http://imageshack.us/photo/my-images/9/afteri.png/

3 个答案:

答案 0 :(得分:2)

我检查了你的代码。你已经修复了视图的高度和宽度,这不是一个好主意。 我测试了wrap_content并且工作正常。所以尽量避免固定的高度和宽度,而是使用适合您需要的wrap_content和fill_parent。如果您遇到任何问题,可以使用相对布局。

答案 1 :(得分:1)

似乎您正在设置layout_weightlayout_width 试试这个(将layout_weight设为1,将layout_width设为0

如果它适合你,它应该有效(均匀分布线性布局的孩子

试试这个

<LinearLayout 
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" android:layout_marginBottom="20dp"
        android:background="#FFF">

        <Button android:id="@+id/allimagebtn" android:layout_weight="1"
            android:layout_height="60dp"
            android:textColor="#FFF"
            android:background="@drawable/cam_red" android:text="Images" android:gravity="bottom" android:paddingLeft="10dp" android:layout_marginTop="2dp" android:paddingTop="2dp" android:layout_width="0dp" android:layout_margin="2dp"/>

        <Button android:id="@+id/button2video" android:layout_weight="1"
            android:layout_height="60dp"
            android:background="@drawable/vid_red" android:textColor="#FFF" android:text="Video Files" android:gravity="bottom" android:textSize="12dp" android:paddingLeft="10dp" android:paddingTop="2dp" android:layout_width="0dp" android:layout_marginTop="2dp"/>

        <Button android:id="@+id/button3audio" android:layout_weight="1"
            android:layout_height="60dp"
            android:textColor="#FFF"
            android:background="@drawable/aud_red" android:text="Audio Files" android:gravity="bottom" android:textSize="12dp" android:paddingLeft="10dp" android:paddingTop="2dp" android:layout_marginTop="2dp" android:layout_width="0dp" android:layout_margin="2dp"/>

    </LinearLayout>

答案 2 :(得分:1)

我看到你的代码必须在你的LinearLayout中添加 android:gravity =“center”

例如,

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
            android:weightSum="1.0" android:layout_width="fill_parent"  
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true" 
            android:layout_marginBottom="20dp"
            android:background="#FFF" android:gravity="center">
     </LinearLayout>

我认为您的问题将得到解决。试试吧。

感谢。