Change style of webview scrollbar to fix visibility #17

This solution is rather hacky but it was the best that I could come up
with that allowed for the use of an XML attribute and a constructor.
This commit is contained in:
mhutti1 2017-03-17 01:18:54 +00:00
parent c8bbf07881
commit e1abe7cbd1
7 changed files with 65 additions and 30 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#885a5a5a" android:endColor="#885a5a5a"
android:angle="0"/>
</shape>

8
res/xml/webview.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<org.kiwix.kiwixmobile.views.web.KiwixWebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarThumbVertical="@drawable/scrollbar_handle_vertical"
android:scrollbarSize="15px"
/>

View File

@ -48,13 +48,12 @@ import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.menu.ActionMenuItemView; import android.support.v7.view.menu.ActionMenuItemView;
import android.support.v7.view.menu.MenuBuilder;
import android.support.v7.view.menu.MenuItemImpl;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.ActionMode; import android.view.ActionMode;
import android.view.KeyEvent; import android.view.KeyEvent;
@ -74,14 +73,8 @@ import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.json.JSONArray; import org.json.JSONArray;
import org.kiwix.kiwixmobile.database.BookmarksDao; import org.kiwix.kiwixmobile.database.BookmarksDao;
import org.kiwix.kiwixmobile.database.KiwixDatabase; import org.kiwix.kiwixmobile.database.KiwixDatabase;
@ -94,6 +87,7 @@ import org.kiwix.kiwixmobile.utils.KiwixTextToSpeech;
import org.kiwix.kiwixmobile.utils.LanguageUtils; import org.kiwix.kiwixmobile.utils.LanguageUtils;
import org.kiwix.kiwixmobile.utils.NetworkUtils; import org.kiwix.kiwixmobile.utils.NetworkUtils;
import org.kiwix.kiwixmobile.utils.RateAppCounter; import org.kiwix.kiwixmobile.utils.RateAppCounter;
import org.kiwix.kiwixmobile.utils.StyleUtils;
import org.kiwix.kiwixmobile.utils.files.FileReader; import org.kiwix.kiwixmobile.utils.files.FileReader;
import org.kiwix.kiwixmobile.utils.files.FileUtils; import org.kiwix.kiwixmobile.utils.files.FileUtils;
import org.kiwix.kiwixmobile.views.AnimatedProgressBar; import org.kiwix.kiwixmobile.views.AnimatedProgressBar;
@ -101,7 +95,14 @@ import org.kiwix.kiwixmobile.views.CompatFindActionModeCallback;
import org.kiwix.kiwixmobile.views.web.KiwixWebView; import org.kiwix.kiwixmobile.views.web.KiwixWebView;
import org.kiwix.kiwixmobile.views.web.ToolbarScrollingKiwixWebView; import org.kiwix.kiwixmobile.views.web.ToolbarScrollingKiwixWebView;
import org.kiwix.kiwixmobile.views.web.ToolbarStaticKiwixWebView; import org.kiwix.kiwixmobile.views.web.ToolbarStaticKiwixWebView;
import org.w3c.dom.Text;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import butterknife.BindView;
import butterknife.ButterKnife;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static org.kiwix.kiwixmobile.TableDrawerAdapter.DocumentSection; import static org.kiwix.kiwixmobile.TableDrawerAdapter.DocumentSection;
@ -597,9 +598,10 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
} }
private KiwixWebView getWebView(String url) { private KiwixWebView getWebView(String url) {
AttributeSet attrs = StyleUtils.getAttributes(this, R.xml.webview);
KiwixWebView webView; KiwixWebView webView;
if (isHideToolbar) { if (isHideToolbar) {
webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer); webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer, attrs);
((ToolbarScrollingKiwixWebView) webView).setOnToolbarVisibilityChangeListener( ((ToolbarScrollingKiwixWebView) webView).setOnToolbarVisibilityChangeListener(
new ToolbarScrollingKiwixWebView.OnToolbarVisibilityChangeListener() { new ToolbarScrollingKiwixWebView.OnToolbarVisibilityChangeListener() {
@Override @Override
@ -614,7 +616,7 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
} }
); );
} else { } else {
webView = new ToolbarStaticKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer); webView = new ToolbarStaticKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer, attrs);
} }
webView.loadUrl(url); webView.loadUrl(url);
webView.loadPrefs(); webView.loadPrefs();

View File

@ -19,7 +19,14 @@
package org.kiwix.kiwixmobile.utils; package org.kiwix.kiwixmobile.utils;
import android.content.Context;
import android.support.annotation.XmlRes;
import android.util.AttributeSet;
import android.util.Xml;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.R;
import org.xmlpull.v1.XmlPullParser;
public class StyleUtils { public class StyleUtils {
public static int dialogStyle() { public static int dialogStyle() {
@ -29,4 +36,16 @@ public class StyleUtils {
return android.support.v7.appcompat.R.style.Theme_AppCompat_Light_Dialog_Alert; return android.support.v7.appcompat.R.style.Theme_AppCompat_Light_Dialog_Alert;
} }
} }
public static AttributeSet getAttributes(Context context, @XmlRes int xml) {
XmlPullParser parser = context.getResources().getXml(R.xml.webview);
try {
parser.next();
parser.nextTag();
} catch (Exception e) {
e.printStackTrace();
}
return Xml.asAttributeSet(parser);
}
} }

View File

@ -19,8 +19,6 @@
package org.kiwix.kiwixmobile.views.web; package org.kiwix.kiwixmobile.views.web;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.ColorMatrixColorFilter; import android.graphics.ColorMatrixColorFilter;
@ -30,27 +28,25 @@ import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v7.widget.Toolbar; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.Gravity;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewTreeObserver;
import android.webkit.WebView; import android.webkit.WebView;
import android.widget.Toast; import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.KiwixWebChromeClient; import org.kiwix.kiwixmobile.KiwixWebChromeClient;
import org.kiwix.kiwixmobile.KiwixWebViewClient; import org.kiwix.kiwixmobile.KiwixWebViewClient;
import org.kiwix.kiwixmobile.R; import org.kiwix.kiwixmobile.R;
import org.kiwix.kiwixmobile.WebViewCallback; import org.kiwix.kiwixmobile.WebViewCallback;
import org.kiwix.kiwixmobile.utils.DimenUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class KiwixWebView extends WebView { public class KiwixWebView extends WebView {
@ -126,8 +122,8 @@ public class KiwixWebView extends WebView {
} }
}; };
public KiwixWebView(Context context, WebViewCallback callback) { public KiwixWebView(Context context, WebViewCallback callback, AttributeSet attrs) {
super(context); super(context, attrs);
this.callback = callback; this.callback = callback;
setWebViewClient(new KiwixWebViewClient(callback)); setWebViewClient(new KiwixWebViewClient(callback));
setWebChromeClient(new KiwixWebChromeClient(callback)); setWebChromeClient(new KiwixWebChromeClient(callback));
@ -207,5 +203,7 @@ public class KiwixWebView extends WebView {
getSettings().setBuiltInZoomControls(true); getSettings().setBuiltInZoomControls(true);
getSettings().setDisplayZoomControls(false); getSettings().setDisplayZoomControls(false);
} }
} }

View File

@ -20,6 +20,7 @@
package org.kiwix.kiwixmobile.views.web; package org.kiwix.kiwixmobile.views.web;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
@ -35,8 +36,8 @@ public class ToolbarScrollingKiwixWebView extends KiwixWebView {
private OnToolbarVisibilityChangeListener listener; private OnToolbarVisibilityChangeListener listener;
private float startY; private float startY;
public ToolbarScrollingKiwixWebView(Context context, WebViewCallback callback, View toolbarView) { public ToolbarScrollingKiwixWebView(Context context, WebViewCallback callback, View toolbarView, AttributeSet attrs) {
super(context, callback); super(context, callback, attrs);
this.toolbarView = toolbarView; this.toolbarView = toolbarView;
} }

View File

@ -1,6 +1,7 @@
package org.kiwix.kiwixmobile.views.web; package org.kiwix.kiwixmobile.views.web;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup; import android.view.ViewGroup;
import org.kiwix.kiwixmobile.KiwixMobileActivity; import org.kiwix.kiwixmobile.KiwixMobileActivity;
@ -17,8 +18,8 @@ public class ToolbarStaticKiwixWebView extends KiwixWebView {
private int statusBarHeight; private int statusBarHeight;
private ViewGroup viewGroup; private ViewGroup viewGroup;
public ToolbarStaticKiwixWebView(Context context, WebViewCallback callback, ViewGroup toolbarLayout) { public ToolbarStaticKiwixWebView(Context context, WebViewCallback callback, ViewGroup toolbarLayout, AttributeSet attrs) {
super(context, callback); super(context, callback, attrs);
statusBarHeight = DimenUtils.getTranslucentStatusBarHeight(context); statusBarHeight = DimenUtils.getTranslucentStatusBarHeight(context);
viewGroup = toolbarLayout; viewGroup = toolbarLayout;
viewGroup.setTranslationY(statusBarHeight); viewGroup.setTranslationY(statusBarHeight);