新しい_Android.support.v4.widget.NestedScrollView
_を使用していて、問題に直面しました。
これが私のレイアウトです:
_<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="250dp">
<Android.support.design.widget.CollapsingToolbarLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.7">
<!-- some views inside -->
</RelativeLayout>
<Android.support.v7.widget.Toolbar
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin"
/>
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<WebView
Android:id="@+id/content"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
</Android.support.v4.widget.NestedScrollView>
_
TextView内にhtmlをロードする必要があるため、次のようにします。
content.setText(Html.fromHtml(htmlString));
そして、それは奇妙に見えます。画面下部に配置したテキストビュー。
テキストをスワイプした後、通常のように見えます。
そして、textviewはこれらの問題のあるビューだけではないと思います。 webviewを使用してみましたが、コンテンツも表示されません(高さの計算が正しくないためと思います)。したがって、NestedScrollView
での作業を修正するには、webviewまたはtextviewが必要です。
追伸dp
でテキストビューの高さを設定すると、テキストは正しく見えますが、高さには_wrap_content
_が必要です。
最後に、WebView
を使用する必要があります。 Alex Facciorussoの回答は部分的に機能しますが、別の問題に直面しました。 WebView
コンテンツに特定の高さがある場合、コンテンツの一部は表示されますが、下にスクロールできません。例:
Mayur Raiyaniが言ったように:この問題はサポートライブラリバージョン22.2.1で解決されています: code.google.com/p/Android/issues/detail?id=175234 。答えてくれてありがとう。
たくさんの投稿を読んだり、WebViewのカスタム実装も読んだりしましたが、私は属性の実験に熱心で、何がうまくいくかを見つけました。これは次のとおりです。
NestedScrollView
の属性を使用
Android:fillViewport="true"
基になるWebView
については、高さをラップとして使用していることを確認してください
<WebView
Android:id="@+id/webview"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
</WebView>
あなたが持っている疑似コードとして
<NestedScrollView> // height= match_parent
<Parent_layout>//could be Realtive/Linear with height= match_parent
<Some_View></Some_View>
<Some_View></Some_View>
<WebView></WebView> // height= wrap_content
</Parent_layout>
</NestedScrollView>
簡単な回避策は、LinearLayout内のTextViewの下に500dpの高さの空のビューを追加することです。そのビューは、TextViewを正しい位置に押し上げます。
<Android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- Your scrolling content -->
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<TextView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:text="@string/random_text" />
<View
Android:layout_width="match_parent"
Android:layout_height="500dp"/>
</LinearLayout>
回避策を見つけました:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
Android:id="@+id/main_content"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true">
<Android.support.v4.widget.NestedScrollView
Android:id="@+id/nestedScrollView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<FrameLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:minHeight="300dp">
<WebView
Android:id="@+id/webview"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</FrameLayout>
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="256dp"
Android:fitsSystemWindows="true"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsingToolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" />
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
500dpのminHeightをNestedScrollViewに追加すると、WebViewがレイアウトのすべての高さにフィットし、折りたたみツールバーが機能します。
[〜#〜] updated [〜#〜]:WebViewをFrameLayoutでラップし、それにminHeightを追加しました。
これはバグです。sdkを更新し、build.gradleの「compile 'com.Android.support:design:22.2.0'」を「compile 'com.Android.support:design:22.2.1'」に置き換えてください。それは私の仕事です。
frameLayoutでWebViewをラップし、それにView(Android:layout_height = "800dp")をWebView'minHeightとして追加しました。