summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-10-16 14:57:35 +0400
committerAndrew Dolgov <[email protected]>2013-10-16 14:57:35 +0400
commit780629fff539128065970011931b141b1eb723ed (patch)
treee9af932b1837b58fe25cca773f775d1f85e98379 /src
parent75cee549729a201a04bffb56aa05d89021b9e94f (diff)
use scrollview/webview instead of titlewebview hack
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java7
-rw-r--r--src/org/fox/ttrss/TitleWebView.java91
-rw-r--r--src/org/fox/ttrss/offline/OfflineArticleFragment.java4
-rw-r--r--src/org/fox/ttrss/util/NoChildFocusScrollView.java34
4 files changed, 40 insertions, 96 deletions
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index 855ecd65..75ba2164 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -23,6 +23,7 @@ import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.text.Html;
+import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
@@ -161,9 +162,9 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
if (web != null) {
registerForContextMenu(web);
-
+
// prevent flicker in ics
- if (android.os.Build.VERSION.SDK_INT >= 11) {
+ if (android.os.Build.VERSION.SDK_INT >= 11 && android.os.Build.VERSION.SDK_INT < 14) {
web.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
@@ -280,7 +281,7 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
}
}
- content += "<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></body></html>";
+ content += "</body></html>";
try {
String baseUrl = null;
diff --git a/src/org/fox/ttrss/TitleWebView.java b/src/org/fox/ttrss/TitleWebView.java
deleted file mode 100644
index d55f2e35..00000000
--- a/src/org/fox/ttrss/TitleWebView.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.fox.ttrss;
-
-// http://www.techques.com/question/1-9718245/Webview-in-Scrollview
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.webkit.WebView;
-
-public class TitleWebView extends WebView{
-
- public TitleWebView(Context context, AttributeSet attrs){
- super(context, attrs);
- }
-
- private int titleHeight;
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- // determine height of title bar
- View title = getChildAt(0);
- titleHeight = title==null ? 0 : title.getMeasuredHeight();
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev){
- return true; // don't pass our touch events to children (title bar), we send these in dispatchTouchEvent
- }
-
- private boolean touchInTitleBar;
- @Override
- public boolean dispatchTouchEvent(MotionEvent me){
-
- boolean wasInTitle = false;
- switch(me.getActionMasked()){
- case MotionEvent.ACTION_DOWN:
- touchInTitleBar = (me.getY() <= visibleTitleHeight());
- break;
-
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL:
- wasInTitle = touchInTitleBar;
- touchInTitleBar = false;
- break;
- }
- if(touchInTitleBar || wasInTitle) {
- View title = getChildAt(0);
- if(title!=null) {
- // this touch belongs to title bar, dispatch it here
- me.offsetLocation(0, getScrollY());
- return title.dispatchTouchEvent(me);
- }
- }
- // this is our touch, offset and process
- me.offsetLocation(0, -titleHeight);
- return super.dispatchTouchEvent(me);
- }
-
- /**
- * @return visible height of title (may return negative values)
- */
- private int visibleTitleHeight(){
- return titleHeight-getScrollY();
- }
-
- @Override
- protected void onScrollChanged(int l, int t, int oldl, int oldt){
- super.onScrollChanged(l, t, oldl, oldt);
- View title = getChildAt(0);
- if(title!=null) // undo horizontal scroll, so that title scrolls only vertically
- title.offsetLeftAndRight(l - title.getLeft());
- }
-
- @Override
- protected void onDraw(Canvas c){
-
- c.save();
- int tH = visibleTitleHeight();
- if(tH>0) {
- // clip so that it doesn't clear background under title bar
- int sx = getScrollX(), sy = getScrollY();
- c.clipRect(sx, sy+tH, sx+getWidth(), sy+getHeight());
- }
- c.translate(0, titleHeight);
- super.onDraw(c);
- c.restore();
- }
- } \ No newline at end of file
diff --git a/src/org/fox/ttrss/offline/OfflineArticleFragment.java b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
index dabf84b0..f8876f99 100644
--- a/src/org/fox/ttrss/offline/OfflineArticleFragment.java
+++ b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
@@ -211,7 +211,7 @@ public class OfflineArticleFragment extends Fragment implements GestureDetector.
getActivity().getTheme().resolveAttribute(R.attr.linkColor, tv, true);
// prevent flicker in ics
- if (android.os.Build.VERSION.SDK_INT >= 11) {
+ if (android.os.Build.VERSION.SDK_INT >= 11 && android.os.Build.VERSION.SDK_INT < 14) {
web.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
@@ -280,7 +280,7 @@ public class OfflineArticleFragment extends Fragment implements GestureDetector.
cssOverride +
"</style>" +
"</head>" +
- "<body>" + articleContent + "<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></body></html>";
+ "<body>" + articleContent + "</body></html>";
try {
String baseUrl = null;
diff --git a/src/org/fox/ttrss/util/NoChildFocusScrollView.java b/src/org/fox/ttrss/util/NoChildFocusScrollView.java
new file mode 100644
index 00000000..3dea82a4
--- /dev/null
+++ b/src/org/fox/ttrss/util/NoChildFocusScrollView.java
@@ -0,0 +1,34 @@
+package org.fox.ttrss.util;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.webkit.WebView;
+import android.widget.ScrollView;
+
+public class NoChildFocusScrollView extends ScrollView {
+
+ public NoChildFocusScrollView(Context context) {
+ super(context);
+ // TODO Auto-generated constructor stub
+ }
+
+
+ public NoChildFocusScrollView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ // TODO Auto-generated constructor stub
+ }
+
+ public NoChildFocusScrollView(Context context, AttributeSet attrs,
+ int defStyle) {
+ super(context, attrs, defStyle);
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void requestChildFocus(View child, View focused) {
+ if (focused instanceof WebView )
+ return;
+ super.requestChildFocus(child, focused);
+ }
+}