【问题标题】:Layout not adjusting in Landscape mode横向模式下不调整布局
【发布时间】:2016-12-30 13:32:58
【问题描述】:

我正在开发一个布局结构如下的应用程序-

活动 A - 此活动是一个选项卡布局活动,它使用 viewpager 作为选项卡,代码如下。

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_marginTop="24dp"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="scrollable" />
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
</android.support.design.widget.CoordinatorLayout> 

添加到 viewpager 的片段具有所有选项卡的通用布局,代码如下。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="8dp"
    android:paddingBottom="8dp"
    android:background="@color/background_app"
    tools:context="com.peacecorps.pcsa.safety_tools.SafetyPlanActivity">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="@color/primary_text_default_material_dark"
        android:textSize="20sp"
        android:textStyle="bold"
        android:text="@string/safety_plan_subtitle"/>

    <android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/safety_plan_pager"
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="320dp" />

    <Button
        android:id="@+id/actionButton"
        style="@style/NavigateButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:text="@string/see_action"
        android:layout_marginTop="10dp" />
</LinearLayout>

正如您所见,此片段再次包含一个视图分页器。此视图分页器将始终由下面的片段填充。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <include android:id="@+id/text_to_show"
        layout="@layout/textview"/>
</ScrollView>

textview 在哪里

<?xml version="1.0" encoding="utf-8"?>
<!--This is the common layout used for TextViews-->
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/primary_text_default_material_dark"
        android:textSize="@dimen/abc_text_size_medium_material"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/bg_textview_rounded_rectangle"
        android:padding="@dimen/textview_padding"
        android:scrollbars="vertical"
        android:fadeScrollbars="false"
        android:layout_marginBottom="@dimen/activity_vertical_margin"
        android:autoLink="web|email"
        android:textColorLink="@color/text_color_link"
    />

这里的 textview 包含不同数量的文本,这些文本在 java 中为不同的选项卡动态设置。 我面临的问题是只有部分 UI 在横向模式下可用,而有些部分丢失了也不能滚动。请帮帮我,我在这个问题上停留了很长时间。

【问题讨论】:

  • 我知道问题是有多个滚动视图会混淆 android safety_plan_pager 具有固定高度,这意味着它只能接收有限的文本,因此需要滚动视图。

标签: android android-layout android-viewpager android-scrollview android-tablayout


【解决方案1】:

您面临的问题是因为您有 2 个滚动行为。当手机处于纵向模式时,它有很多空间,320dp 高度 ViewPager 无法使用占据所有可用空间,但是当手机处于 横向模式 320dp 高度 ViewPager 将占据整个屏幕,因此布局只会滚动第二个视图分页器,这意味着 横向模式 下的整个屏幕只能在第二个 ViewPager

请记住,底部的那些是第一个被访问的。这意味着底部的 view 具有更高的 z-index - 代码参考不是实际的查看。

【讨论】:

  • 谢谢。现在我明白发生了什么,但我该如何解决。 :-)
  • 知道这个问题后我做了一些调整,它满足了我的要求。但是我不知道如何准确地解决这个问题。如果你能回答,它可能对社区有帮助。谢谢
  • 您可以通过在布局中使用百分比来解决它。线性布局在其子级上有一个名为 weightSum 和 layout_weight 的属性。您应该阅读更多内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多