如何在LinearLayout中设置最大宽度,以防止其在横向模式下拉伸?

5

我的应用在竖屏模式下看起来很好,但在横屏模式下会被拉伸并且显得很糟糕。我知道我可以为横屏模式创建一个单独的布局,但我更愿意设置根元素的最大宽度,这样横屏模式只会在两侧留出一些空白。有没有办法做到这一点?

3个回答

4
保留不同的布局文件是一种正确的解决方案,但它会增加项目的复杂性(如果设计师重新设计视图布局,则需要维护多个文件)。
如果您只需要更改LinearLayout的宽度,可以执行以下操作。在layout文件夹中保留一个xml文件,并为其赋值。
<LinearLayout
    style="@style/width_match_parent_max_200"
    android:layout_height="wrap_content">

然后,在values-600dp/styles.xml文件中写入以下内容:

<resources>
<style name="width_match_parent_max_200">
    <item name="android:layout_width">200dp</item>
</style>
</resources>

在您的values/styles.xml文件中:

<resources>
<style name="width_match_parent_max_200">
    <item name="android:layout_width">match_parent</item>
</style>


谢谢,这似乎是最干净的解决方案 :) 顺便说一下,一开始它对我不起作用,因为有两个问题:1)应该是values-w600dp而不是values-600dp(你的缺少'w'字符)2)我的设备尺寸是320dp x 480dp,所以我已经将其更改为values-w320dp,layout_width为320dp,现在完美运行! - Bruce

2

BoundedViews库允许在layout_width="match_parent"的视图上设置boundedWidth/boundedHeight限制宽度/高度。


那个库真的很棒,谢谢分享。 - Amr Saber

1

我能想到的最快解决方案是,在纵向和横向分别保存在单独的dimen.xml文件中的右边距和左边距。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接