WebViewで高さや幅が十分に足りているのにスクロールバーが出る問題
IS01のSDK入れてみたら、エミュレータでも簡単に再現できますな。
レイアウトの main.xml はこんな感じ。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <WebView android:id="@+id/webView" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:paddingTop="1dip" android:paddingBottom="2dip" android:layout_height="wrap_content" android:layout_width="fill_parent" /> </LinearLayout>
これが Activity のコード。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView wb = (WebView)findViewById(R.id.webView); wb.loadData("hello", "text/html", "utf-8"); }
これで実行してみると...
こんな感じでスクロールバーが出てしまう。この問題が解決できなくて困り中。スクロールバーを消したいのではなくて、必要ないときに消えて欲しいだけ。
このスクロールバーが出ると、pageDown() メソッドで 1px スクロールが発生してしまうので、ページの最後まで表示したかどうかの判定(pageDown()が返すbooleanで判定できる)が期待しない値になってしまう...。
いろんなことを試したけど、唯一スクロールバーが出なくなった方法は、↓こんな感じで、WebViewの隣のViewの paddingTop を 1dip か 2dip ほど増やすというやり方。
<TextView android:paddingTop="2dip" android:paddingBottom="2dip" android:layout_height="wrap_content" android:layout_width="fill_parent" />
WebViewに手を加えていないのに、これでWebViewのスクロールバーが出なくなる...。HTMLの中身によってはまた出てくるかもしれないけど...。どっちにしろ、まるで根拠のないやり方で、まともな解決方法ではないですな...。
スクロールバーが出ているとき、右下のスクリーンショット。
スクロールバーの内側のグレーの線が気になった。そもそも、IS01 ではスクロールバーが出る出ないにかかわらず、常にこの線が出ているけど、Android 1.6のエミュレータではこの線は無い...。
webViewのbackgroundに"#FFFF0000"を設定してみたら、
#FFFF0000 とは違うけど、色が変わった。これがヒントにならないかなーと思ったけど未解決...。