使 NestedScrollView 中的工具栏不可滚动
Make Toolbar in NestedScrollView not scrollable
我在 NestedScrollView
中有一个自定义 Toolbar
。
NestedScrollView
里面还有一些TextViews
和Edittexts
.
我的问题是,不仅 TextViews
和 Edittexts
滚动了,Toolbar
也滚动了。
滚动 NestedScrollView
中的 Toolbar
是合乎逻辑的。
我想要一个自定义 Toolbar
,其绝对位置在顶部且可滚动 TextViews
和 Edittexts
。
这是我正在使用的代码:
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffffff"
android:elevation="5dp"
android:minHeight="?attr/actionBarSize"
app:contentInsetEnd="50dp"
app:contentInsetRight="50dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text"/>
</android.support.v4.widget.NestedScrollView>
所以我尝试将 TextViews
和 Edittexts
包装在 ScrollView
中,例如:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffffff"
android:elevation="5dp"
android:minHeight="?attr/actionBarSize"
app:contentInsetEnd="50dp"
app:contentInsetRight="50dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text"/>
</ScrollView>
</LinearLayout>
但是没用。
It's very important that a custom Toolbar
is used.
尝试相对布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".EmptyActivity">
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffffff"
android:elevation="5dp"
android:minHeight="?attr/actionBarSize"
app:contentInsetEnd="50dp"
app:contentInsetLeft="0dp"
app:contentInsetRight="50dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text" />
</ScrollView>
</RelativeLayout>
ScrollView
(和NestedScrollView
)会允许你给他们添加多个直接children,但是为了让他们正常工作,他们必须正好有一个直接child。因此,将 ScrollView
的内容包装在 wrap_content
LinearLayout:
中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text"/>
<!-- many more views -->
</LinearLayout>
</ScrollView>
</LinearLayout>
我在 NestedScrollView
中有一个自定义 Toolbar
。
NestedScrollView
里面还有一些TextViews
和Edittexts
.
我的问题是,不仅 TextViews
和 Edittexts
滚动了,Toolbar
也滚动了。
滚动 NestedScrollView
中的 Toolbar
是合乎逻辑的。
我想要一个自定义 Toolbar
,其绝对位置在顶部且可滚动 TextViews
和 Edittexts
。
这是我正在使用的代码:
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffffff"
android:elevation="5dp"
android:minHeight="?attr/actionBarSize"
app:contentInsetEnd="50dp"
app:contentInsetRight="50dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text"/>
</android.support.v4.widget.NestedScrollView>
所以我尝试将 TextViews
和 Edittexts
包装在 ScrollView
中,例如:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffffff"
android:elevation="5dp"
android:minHeight="?attr/actionBarSize"
app:contentInsetEnd="50dp"
app:contentInsetRight="50dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay">
</android.support.v7.widget.Toolbar>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text"/>
</ScrollView>
</LinearLayout>
但是没用。
It's very important that a custom
Toolbar
is used.
尝试相对布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".EmptyActivity">
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="#ffffff"
android:elevation="5dp"
android:minHeight="?attr/actionBarSize"
app:contentInsetEnd="50dp"
app:contentInsetLeft="0dp"
app:contentInsetRight="50dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text" />
</ScrollView>
</RelativeLayout>
ScrollView
(和NestedScrollView
)会允许你给他们添加多个直接children,但是为了让他们正常工作,他们必须正好有一个直接child。因此,将 ScrollView
的内容包装在 wrap_content
LinearLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="A long unimportant text"/>
<!-- many more views -->
</LinearLayout>
</ScrollView>
</LinearLayout>