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.AppCompatActivity;
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.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.ActionMode;
import android.view.KeyEvent;
@ -74,14 +73,8 @@ import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
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.kiwix.kiwixmobile.database.BookmarksDao;
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.NetworkUtils;
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.FileUtils;
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.ToolbarScrollingKiwixWebView;
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 org.kiwix.kiwixmobile.TableDrawerAdapter.DocumentSection;
@ -597,9 +598,10 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
}
private KiwixWebView getWebView(String url) {
AttributeSet attrs = StyleUtils.getAttributes(this, R.xml.webview);
KiwixWebView webView;
if (isHideToolbar) {
webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer);
webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer, attrs);
((ToolbarScrollingKiwixWebView) webView).setOnToolbarVisibilityChangeListener(
new ToolbarScrollingKiwixWebView.OnToolbarVisibilityChangeListener() {
@Override
@ -614,7 +616,7 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
}
);
} else {
webView = new ToolbarStaticKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer);
webView = new ToolbarStaticKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer, attrs);
}
webView.loadUrl(url);
webView.loadPrefs();

View File

@ -19,7 +19,14 @@
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.R;
import org.xmlpull.v1.XmlPullParser;
public class StyleUtils {
public static int dialogStyle() {
@ -29,4 +36,16 @@ public class StyleUtils {
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;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.ColorMatrixColorFilter;
@ -30,27 +28,25 @@ import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.support.v7.widget.Toolbar;
import android.util.AttributeSet;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.webkit.WebView;
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.KiwixWebChromeClient;
import org.kiwix.kiwixmobile.KiwixWebViewClient;
import org.kiwix.kiwixmobile.R;
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 {
@ -126,8 +122,8 @@ public class KiwixWebView extends WebView {
}
};
public KiwixWebView(Context context, WebViewCallback callback) {
super(context);
public KiwixWebView(Context context, WebViewCallback callback, AttributeSet attrs) {
super(context, attrs);
this.callback = callback;
setWebViewClient(new KiwixWebViewClient(callback));
setWebChromeClient(new KiwixWebChromeClient(callback));
@ -207,5 +203,7 @@ public class KiwixWebView extends WebView {
getSettings().setBuiltInZoomControls(true);
getSettings().setDisplayZoomControls(false);
}
}

View File

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

View File

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