AndroidのScrollViewからスクロールバートラックを削除する


104

私のAndroidアプリにはメインのWebView(ローカルリソースから読み込まれたHTML)があり、画面の幅全体を使用して(垂直に)スクロール可能にしたいと考えています。したがって、レイアウトXMLのWebViewをScrollViewでラップしましたが、どうしても、スクロールビューの右側からスクロールバートラックを削除できないようです。さらに悪いことに、スクロールバートラックの背景色を変更できないようです。

トラックの所要時間は約10 dpであり、WebViewのHTMLに問題が生じています。スクロールバーをWebビューの上部に表示たいのですが(意味がわかっていれば、iPhoneスタイルです)。これで、「HTMLを10px薄くするのはなぜですか」と言うことができます。これは私のフォールバックソリューションですが、そうする必要はありません。

これが関連するレイアウトXMLのスニペットです。私が見つけることができるすべてのandroid:etc属性を試したことがわかります。

<ScrollView 
  android:id="@+id/deal_web_view_holder"
  android:layout_below="@id/clock_bar_holder"
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"
  android:fillViewport="false"
  android:fadingEdge="none"
  android:background="#02a7e9"
  android:scrollbars="none"
  android:scrollbarSize="0dp"
  android:paddingRight="0dp"
  android:scrollbarAlwaysDrawVerticalTrack="false"
  android:scrollbarStyle="insideOverlay"
  android:scrollbarTrackVertical="@drawable/scrollbar_track_vertical" >
    <WebView
       android:id="@+id/deal_web_view"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>  
</ScrollView>

私はプラットフォーム2.1 / APIレベル7をターゲットにしています。実際には、通常のサイズのディスプレイ、mdp、hdp、およびxhdpを処理しています。

回答:


506

xmlを使用してビュー(およびそのサブクラス)からスクロールバーを削除するには:

android:scrollbars="none"

http://developer.android.com/reference/android/view/View.html#attr_android:scrollbars


1
これは、質問者が尋ねた質問ではありません。彼はそうするだろうと言ったlike the scrollbar to appear on top of the web view content
Sudhanshu

11
機能しますが、キーボードが開いていると画面をスクロールできません
DeltaCap019

4
android:scrollbarThumbVertical = "@ null"キーボードが開いているときに画面をスクロールする場合は、scrollviewにこれを追加します:)
Biswas Khayargoli

29

これをあなたのアクティビティで試してください:

ScrollView sView = (ScrollView)findViewById(R.id.deal_web_view_holder);
// Hide the Scollbar
sView.setVerticalScrollBarEnabled(false);
sView.setHorizontalScrollBarEnabled(false);

http://developer.android.com/reference/android/view/View.html#setVerticalScrollBarEnabled%28boolean%29


おかげで...(コードとlayout.xmlで)すでに試してみましたが、このアプローチでも、ScrollView内のWebViewの水平サイズが妨げられていました。最善の解決策は上記で提供されたもので、ScrollViewを完全に削除し、WebViewがスクロール自体を処理できるようにしました。根本的な問題は、ScrollViewを使用することが適切である場合の理解の欠如でした。つまり、Androidのすべてのビューでスクロールを処理できます。
Mick Byrne

18

そもそもなぜa WebViewをa ScrollViewに入れているのか少し混乱しています。AにWebViewは独自の組み込みのスクロールシステムがあります。

あなたの実際の質問に関してScrollbar、あなたが上に現れたいなら、あなたは使うことができます

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"

はい、あなたはそもそもScrollViewを必要としないことについて正しいです。ここで確認する前に自分で解決しました。Webビューの 'setScrollBarStyle'は非常に役立ちました。
Mick Byrne、2011年

だけでなく、それは必要ありませんあなたのWebViewはとにかくスクロールていないように、ScrollViewは、スクロール可能なビューを含めることはできませんです
Aパーソン

3
機能していません。正解はGarzahdの答えです。
Misagh Emamverdi 2015年

3
正解は以下です、android:
scrollbars

5

これをmyに追加することで私の問題を解決しましたListView

android:scrollbars="none"

4

これらのソリューションは、相対的なレイアウトと私の場合には失敗したとキーボードが開いている場合 android:scrollbars="none"android:scrollbarStyle="insideOverlay"も動作していません。

ツールバーがなくなった、私の完了ボタンがなくなった。

機能していない

これは私のために働いています

myScrollView.setVerticalScrollBarEnabled(false);

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.