ScrollView 在选项卡式活动中无法正常工作

Posted

技术标签:

【中文标题】ScrollView 在选项卡式活动中无法正常工作【英文标题】:ScrollView not working properly with tabbed activity 【发布时间】:2016-03-25 01:40:12 【问题描述】:

我正在创建一个带有标签和视图寻呼机的活动。我使用 android studio 提供的默认选项卡式活动模板来创建它。我的问题是我无法将滚动添加到视图寻呼机中添加的片段布局。 我从这个链接阅读Add ScrollView to Tab Activity

并删除了这个 app:layout_behavior="@string/appbar_scrolling_view_behavior".

但是当我将这一行添加到滚动视图时,我的选项卡和操作栏也不见了。我已经在滚动视图中添加了我的片段,但它不起作用。

这是我的主要和片段 xml

Main.xml

   <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_
    android:layout_
    android:fitsSystemWindows="true"
    tools:context="com.webninjaz.kirti.dnschanger.activities.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_
        android:layout_
        android:paddingTop="@dimen/appbar_padding_top"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_
            android:layout_
            android:background="#5A595B"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay">
            <TextView
                android:layout_
                android:layout_
                android:text="DNS CHANGER"
                android:layout_gravity="center"
                android:id="@+id/toolbar_title"
                android:textSize="22sp"
                android:textStyle="bold"
                android:textColor="#ffffff"/>
        </android.support.v7.widget.Toolbar>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_
            android:layout_
            android:background="#727272"/>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/container"
        android:layout_
        android:layout_
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.CoordinatorLayout>

片段 xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:background="#ccc"
    android:focusableInTouchMode="true">

    <ScrollView
        android:layout_
        android:layout_>
        <LinearLayout
            android:layout_
            android:orientation="vertical"
            android:layout_>
                    <TextView
                        android:layout_
                        android:layout_
                        android:gravity="center"
                        android:id="@+id/TopHeader"
                        android:text="Current WIFI Info"
                        android:paddingRight="15dp"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:layout_marginTop="20dp"/>
            <LinearLayout
                android:layout_
                android:layout_marginTop="10dp"
                android:orientation="horizontal"
                android:layout_
                android:baselineAligned="false">

                <LinearLayout
                    android:layout_
                    android:layout_weight=".50"
                    android:paddingRight="5dp"
                    android:orientation="vertical"
                    android:layout_>
                    <TextView
                        android:layout_
                        android:layout_
                        android:gravity="right"
                        android:textAlignment="gravity"
                        android:id="@+id/WiFiConnectLeft"
                        android:text="Wifi Name :"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:gravity="right"
                        android:textAlignment="gravity"
                        android:id="@+id/DefaultGatewayLeft"
                        android:text="Default Gateway :"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:gravity="right"
                        android:textAlignment="gravity"
                        android:id="@+id/DNS1Left"
                        android:text="Primary DNS :"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:gravity="right"
                        android:textAlignment="gravity"
                        android:id="@+id/DNS2Left"
                        android:text="Secondary DNS :"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:gravity="right"
                        android:textAlignment="gravity"
                        android:id="@+id/CurrentIPLeft"
                        android:text="IP Address :"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_
                    android:layout_weight=".50"
                    android:paddingLeft="5dp"
                    android:orientation="vertical"
                    android:layout_>
                    <TextView
                        android:layout_
                        android:layout_
                        android:gravity="left"
                        android:id="@+id/WiFiConnectedText"
                        android:textAlignment="gravity"
                        android:text=""/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:id="@+id/DefaultGatewayText"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:id="@+id/DNS1Text"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:id="@+id/DNS2Text"/>
                    <TextView
                        android:layout_
                        android:layout_
                        android:id="@+id/CurrentIPText"/>
                </LinearLayout>
            </LinearLayout>

                <TextView
                    android:layout_
                    android:layout_
                    android:text="CHANGE DNS"
                    android:layout_gravity="center"
                    android:textAlignment="gravity"
                    android:id="@+id/MiddleHeaderText"
                    android:layout_marginTop="20dp"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textStyle="bold"
                    android:textColor="#000"
                    android:textSize="20sp"/>

            <LinearLayout
                android:layout_
                android:layout_
                android:layout_below="@+id/tv_title"
                android:orientation="horizontal"
                android:weightSum="3"
                android:layout_marginTop="50dp"
                android:id="@+id/lin_primary"
                android:gravity="center_vertical"
                android:paddingRight="15dp">
                <TextView
                    android:layout_
                    android:layout_
                    android:layout_weight="1"
                    android:text="@string/primary"
                    android:textStyle="bold"
                    android:textColor="#000"
                    android:id="@+id/PrimaryDNSText"
                    android:gravity="center"
                    android:paddingLeft="@dimen/activity_horizontal_margin"
                    android:textSize="13sp"/>
                <EditText
                    android:layout_
                    android:layout_
                    android:layout_weight="1.2"
                    android:background="#000"
                    android:textColor="#ffffff"
                    android:inputType="numberDecimal"
                    android:layout_marginRight="10dp"
                    android:maxLength="16"
                    android:id="@+id/EDITDNS1"
                    android:gravity="center"
                    android:text=""/>
                <Button
                    android:layout_
                    android:layout_
                    android:layout_weight="0.8"
                    android:text="BROWSE"
                    android:gravity="center"
                    android:background="@drawable/textview_click"
                    android:textColor="#ffffff"
                    android:id="@+id/BrowseDNS1"/>
            </LinearLayout>
            <LinearLayout
                android:layout_
                android:layout_
                android:layout_below="@+id/lin_primary"
                android:orientation="horizontal"
                android:weightSum="3"
                android:layout_marginTop="30dp"
                android:id="@+id/lin_secondary"
                android:gravity="center_vertical"
                android:paddingRight="15dp">
                <TextView
                    android:layout_
                    android:layout_
                    android:layout_weight="1"
                    android:text="@string/secondary"
                    android:textColor="#000"
                    android:id="@+id/SecondaryDNSText"
                    android:paddingLeft="@dimen/activity_horizontal_margin"
                    android:textSize="12sp"
                    android:gravity="center"/>
                <EditText
                    android:layout_
                    android:layout_
                    android:layout_weight="1.2"
                    android:background="#000"
                    android:textColor="#ffffff"
                    android:inputType="numberDecimal"
                    android:layout_marginRight="10dp"
                    android:maxLength="16"
                    android:id="@+id/EDITDNS2"
                    android:gravity="center"
                    android:text=""
                    />
                <Button
                    android:layout_
                    android:layout_
                    android:layout_weight="0.8"
                    android:text="BROWSE"
                    android:gravity="center"
                    android:background="@drawable/textview_click"
                    android:textColor="#ffffff"
                    android:id="@+id/BrowseDNS2"/>
            </LinearLayout>
            <LinearLayout
                android:layout_
                android:gravity="center"
                android:layout_marginTop="15dp"
                android:layout_>
                <Button
                    android:layout_
                    android:layout_
                    android:id="@+id/UpdateDNS"
                    android:text="Update"
                    android:background="@drawable/textview_click"
                    android:textColor="#ffffff"/>
                <Button
                    android:layout_
                    android:layout_
                    android:id="@+id/ResetWifi"
                    android:text="RESET"
                    android:background="@drawable/textview_click"
                    android:textColor="#ffffff"
                    android:layout_marginLeft="20dp"/>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

【问题讨论】:

【参考方案1】:

我认为你必须在滚动视图中添加它并从视图寻呼机中删除。 滚动视图可能是这样的。

   <ScrollView
    android:layout_
    android:layout_
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

【讨论】:

这也会删除标签和标题栏 你能告诉我你用什么设备进行测试,因为我在 5.1 版本的 5.5 屏幕尺寸上运行并且它运行良好。 索尼 xperia kitkat 4.4.4【参考方案2】:

我不得不将它添加到线性布局中:

android:paddingBottom="100dp"

似乎 Viewpager/container 视图设置为大于某处的设备屏幕。

【讨论】:

以上是关于ScrollView 在选项卡式活动中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

更改选项卡式视图 SwiftUI 的凹槽区域背景颜色

获取选项卡式活动的当前选定选项卡

在选项卡式活动中使用 RecyclerView 的 OnScreenRotation

选项卡式活动中未显示工具栏标题

如何使用列表视图在选项卡式活动的片段中呈现 SQLite 表数据 [重复]

约束布局中的 ViewPager 选项卡式活动在底部被剪切以用于 recyclerview