Android 23 及更小版本在横向模式下不会填满所有屏幕

Posted

技术标签:

【中文标题】Android 23 及更小版本在横向模式下不会填满所有屏幕【英文标题】:Android 23 and smaller don't fill all screen in landscape mode 【发布时间】:2017-06-13 15:41:42 【问题描述】:

我制作了一个使用动态表的应用程序,我的 XML 代码是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_weight="1"
android:scrollbars="none">

<include
    android:id="@id/action_bar"
    layout="@layout/actionbar_toolbar" />

<HorizontalScrollView
    android:layout_
    android:layout_
    android:layout_below="@id/action_bar">

    <ScrollView
        android:layout_
        android:layout_>

        <TableLayout
            android:id="@+id/table"
            android:layout_
            android:layout_
             android:stretchColumns="*">

        </TableLayout>
    </ScrollView>
</HorizontalScrollView>

该表从代码中获取所有值。我的问题是,在 Android 23 及更低版本中,当您将屏幕方向设置为横向模式时,屏幕看起来像:

但在Android 24及以上版本中,屏幕看起来不错:

P.D:match_parent 属性不起作用。

【问题讨论】:

【参考方案1】:

不知道为什么它显示不同,据我所知,它的显示应该考虑布局属性(即所有 wrap_content),没有任何迹象表明它应该填充父级。 但是,将水平 ScrollView 的 fillViewPort 属性及其宽度更改为 match_parent 可以解决问题。

https://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport

    ...
    <HorizontalScrollView
    android:layout_
    android:layout_
    android:fillViewport="true">
    ...

【讨论】:

以上是关于Android 23 及更小版本在横向模式下不会填满所有屏幕的主要内容,如果未能解决你的问题,请参考以下文章

Android TimePicker 在横向模式下无法很好地显示

如何在横向模式下显示 android 启动画面?

如何以编程方式在 Android 的 API 23 及更高版本中获取位置(纬度、经度)?

ios:文本在 iPhone 5S 及更早版本(4 英寸及更小的设备)上无法正确换行

我的Android Studio应用仅适用于API 23及更高版本

Android drawable 对于 API <23 和 API 23 及更高版本显示为拉伸