【问题标题】:Android: Layout breaks when Text Size changedAndroid:文本大小更改时布局中断
【发布时间】:2011-10-18 01:43:10
【问题描述】:

以下是我的 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>

如何避免这种情况??

【问题讨论】:

  • “破坏布局”不是最有用的描述。您能否更具体地说明您希望看到的内容以及您看到的内容?截图获得奖励积分。带注释的屏幕截图会成为独角兽。
  • 我更改并添加了更多关于屏幕截图的信息。你能检查一下吗:)
  • 更有帮助。我会试一试,但下面三个人已经有了我最好的猜测。 :)

标签: android xml layout


【解决方案1】:

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

【讨论】:

  • 感谢我将高度更改为 fill_parent,它的作用就像魅力 :)
【解决方案2】:

您似乎正在设置layout_weightlayout_width 试试这个(设置layout_weight1layout_width0

如果它适合你,它应该可以工作(线性布局的孩子均匀分布

试试这个

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

【讨论】:

  • 就像@Mansi 所说的添加重力=中心...但问题是您使用的是百分比重量并同时设置宽度...为什么我的代码不起作用!?跨度>
【解决方案3】:

我看到你的代码你必须在你的 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>

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

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多