1

我正在使用线性布局,方向 = 垂直,我在这个线性布局中有 3 个具有不同权重的按钮(因此其中 3 个按钮水平填充页面)。因为我想让按钮看起来更短,所以我将高度设置为 42 dip。它在大屏幕设备上看起来不错,但是当我在一个非常小的屏幕设备上测试它时,由于尺寸问题,中间按钮中的一半文字消失了。我该如何解决这个问题?

<LinearLayout
    android:id="@+id/StatisticsButtons"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dip"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/viewAllBtn"
        android:layout_width="0dp"
        android:layout_height="42dip"
        android:layout_weight="1"
        android:background="@drawable/button_for_statistic"
        android:text="View All"
        android:textColor="@drawable/button_text_color_statistic"
        android:textSize="17dip" />

    <Button
        android:id="@+id/viewPartialBtn"
        android:layout_width="0dp"
        android:layout_height="42dip"
        android:layout_marginLeft="10dip"
        android:layout_weight="1.3"
        android:background="@drawable/button_for_statistic"
        android:text="View partial record"                        //"View partial" displayed , I guess the screen is too "narrow" to display the "record"
        android:textColor="@drawable/button_text_color_statistic"
        android:textSize="17dip" />

    <Button
        android:id="@+id/viewLeaveBtn"
        android:layout_width="0dp"
        android:layout_height="42dip"
        android:layout_marginLeft="10dip"
        android:layout_weight="1"
        android:background="@drawable/button_for_statistic"
        android:text="Leave"
        android:textColor="@drawable/button_text_color_statistic"
        android:textSize="17dip" />
</LinearLayout>

<item android:state_pressed="true"><shape>
        <solid android:color="#0033d434" />

        <stroke android:width="2dp" android:color="#aaa22f" />

        <corners android:radius="2dp" />

        <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
    </shape></item>
<item><shape>
        <solid android:color="#aaa22f" />

        <corners android:radius="2dp" />

        <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
    </shape></item>

4

3 回答 3

0

您可以将整个布局包装在ScrollView. 此外,请考虑您正在测试/定位的屏幕尺寸。一些默认的模拟器尺寸非常小,以至于很少有手机实际上具有这些尺寸:Android Dashboard: Screen Sizes and Densities

编辑:

还可以考虑为不同的屏幕尺寸提供替代资源。您可以根据屏幕宽度(或其他内容)调整文本大小。请参阅提供资源API 指南。

于 2012-10-03T04:32:03.217 回答
0

这是因为您为按钮的大小使用了固定的密度值(即 42 dp)。您确实应该尽可能坚持使用 wrap_content 或 match_parent ,以确保您的资产/小部件将在所有设备上相应地扩展和适应。如果您将按钮的高度和宽度设置为 wrap_content,您会发现它可以在多个设备上完美地换行文本。

于 2012-10-02T23:34:14.110 回答
0

当您使用 layout_weight 时,控件的宽度是按比例确定的。在您的情况下,您为按钮指定了 1、1.3、1 的权重。但是您的第二个按钮 viewPartialBtn 需要更多宽度。你必须增加它的宽度。您可以尝试将 layout_weight 设置为 2, 5, 1,以便它采用文本查看全部、查看部分记录和离开所需的宽度。

换句话说,您告诉线性布局以适应控件的宽度为 2:5:1。

于 2012-10-03T04:10:40.327 回答