summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2020-10-02 15:16:55 +0300
committerAndrew Dolgov <[email protected]>2020-10-02 15:16:55 +0300
commit39d707061fc481ca8163444f224339fe6b2314b1 (patch)
treed0da14ab032ef09260cd289842320970a2e6d4ac
parent1a1051caee2eeb2ea265c3db7f033731252c9c49 (diff)
use coordinator layout / appbarlayout to deal with collapsing toolbars and article header
-rwxr-xr-xorg.fox.ttrss/build.gradle2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java25
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java42
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java28
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java32
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java33
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java45
-rw-r--r--org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml27
-rw-r--r--org.fox.ttrss/src/main/res/layout/activity_master_phone.xml26
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/fragment_article.xml102
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/toolbar.xml1
11 files changed, 127 insertions, 236 deletions
diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle
index 2e8e7918..a211b0d7 100755
--- a/org.fox.ttrss/build.gradle
+++ b/org.fox.ttrss/build.gradle
@@ -60,6 +60,8 @@ dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.browser:browser:1.0.0'
+ implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
+ implementation 'com.otaliastudios:nestedscrollcoordinatorlayout:1.0.3'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.shamanland:fab:0.0.8'
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
index 132810b8..cdb424c3 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
@@ -25,14 +25,14 @@ import android.webkit.WebView.HitTestResult;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.ImageView;
-import android.widget.ScrollView;
import android.widget.TextView;
+import androidx.core.widget.NestedScrollView;
+
import com.shamanland.fab.ShowHideOnScroll;
import org.fox.ttrss.types.Article;
import org.fox.ttrss.types.Attachment;
-import org.fox.ttrss.util.NotifyingScrollView;
import java.net.MalformedURLException;
import java.net.URL;
@@ -40,7 +40,6 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import androidx.appcompat.app.ActionBar;
import icepick.State;
public class ArticleFragment extends StateSavedFragment {
@@ -184,27 +183,9 @@ public class ArticleFragment extends StateSavedFragment {
return view;
} */
- NotifyingScrollView scrollView = view.findViewById(R.id.article_scrollview);
+ NestedScrollView scrollView = view.findViewById(R.id.article_scrollview);
m_fab = view.findViewById(R.id.article_fab);
- if (scrollView != null && m_activity.isSmallScreen()) {
- view.findViewById(R.id.article_heading_spacer).setVisibility(View.VISIBLE);
-
- scrollView.setOnScrollChangedListener(new NotifyingScrollView.OnScrollChangedListener() {
- @Override
- public void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) {
- ActionBar ab = m_activity.getSupportActionBar();
-
- if (t >= oldt && t >= ab.getHeight()) {
- ab.hide();
- } else if (t <= ab.getHeight() || oldt - t >= 10) {
- ab.show();
- }
-
- }
- });
- }
-
if (scrollView != null && m_fab != null) {
if (m_prefs.getBoolean("enable_article_fab", true)) {
scrollView.setOnTouchListener(new ShowHideOnScroll(m_fab));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
index 71fbdd08..6d04096b 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
@@ -50,6 +50,16 @@ import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import androidx.core.app.ActivityCompat;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
import com.amulyakhare.textdrawable.TextDrawable;
import com.amulyakhare.textdrawable.util.ColorGenerator;
import com.bumptech.glide.Glide;
@@ -81,16 +91,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.TimeZone;
-import androidx.appcompat.app.ActionBar;
-import androidx.core.app.ActivityCompat;
-import androidx.core.app.ActivityOptionsCompat;
-import androidx.core.view.ViewCompat;
-import androidx.recyclerview.widget.DefaultItemAnimator;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.ItemTouchHelper;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import icepick.State;
import jp.wasabeef.glide.transformations.CropCircleTransformation;
@@ -431,18 +431,16 @@ public class HeadlinesFragment extends StateSavedFragment {
fab.setVisibility(View.GONE);
}
- if (m_activity.isSmallScreen()) {
+ /*if (m_activity.isSmallScreen()) {
View layout = inflater.inflate(R.layout.headlines_heading_spacer, m_list, false);
m_adapter.addHeaderView(layout);
m_swipeLayout.setProgressViewOffset(false, 0,
m_activity.getResources().getDimensionPixelSize(R.dimen.abc_action_bar_default_height_material) +
m_activity.getResources().getDimensionPixelSize(R.dimen.abc_action_bar_default_padding_end_material) + 15);
- }
+ }*/
m_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
- boolean m_forcePhoneLayout = m_prefs.getBoolean("force_phone_layout", false);
-
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
@@ -499,22 +497,6 @@ public class HeadlinesFragment extends StateSavedFragment {
}
}
- if ((m_forcePhoneLayout || !m_activity.isTablet()) && m_articles.size() > 0) {
- m_amountScrolled += dy;
- ActionBar bar = m_activity.getSupportActionBar();
-
- if (dy > 0 && m_amountScrolled >= m_scrollToToggleBar) {
- bar.hide();
- m_amountScrolled = 0;
- } else if (dy < 0 && m_amountScrolled <= -m_scrollToToggleBar) {
- bar.show();
- m_amountScrolled = 0;
- }
-
- }
-
- //Log.d(TAG, "onScrolled: " + m_refreshInProgress + " " + m_lazyLoadDisabled + " " + lastVisibleItem + " " + m_articles.size());
-
if (!m_refreshInProgress && !m_lazyLoadDisabled && lastVisibleItem >= m_articles.size() - 5) {
m_refreshInProgress = true;
new Handler().postDelayed(new Runnable() {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
index eae50dcb..efeb6b71 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
@@ -26,14 +26,15 @@ import android.webkit.WebView.HitTestResult;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.ImageView;
-import android.widget.ScrollView;
import android.widget.TextView;
+import androidx.core.widget.NestedScrollView;
+import androidx.fragment.app.Fragment;
+
import com.shamanland.fab.ShowHideOnScroll;
import org.fox.ttrss.R;
import org.fox.ttrss.util.ImageCacheService;
-import org.fox.ttrss.util.NotifyingScrollView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -46,9 +47,6 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import androidx.appcompat.app.ActionBar;
-import androidx.fragment.app.Fragment;
-
public class OfflineArticleFragment extends Fragment {
private final String TAG = this.getClass().getSimpleName();
@@ -209,27 +207,9 @@ public class OfflineArticleFragment extends Fragment {
final String link = m_cursor.getString(m_cursor.getColumnIndex("link"));
- NotifyingScrollView scrollView = view.findViewById(R.id.article_scrollview);
+ NestedScrollView scrollView = view.findViewById(R.id.article_scrollview);
m_fab = view.findViewById(R.id.article_fab);
- if (scrollView != null && m_activity.isSmallScreen()) {
- view.findViewById(R.id.article_heading_spacer).setVisibility(View.VISIBLE);
-
- scrollView.setOnScrollChangedListener(new NotifyingScrollView.OnScrollChangedListener() {
- @Override
- public void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) {
- ActionBar ab = m_activity.getSupportActionBar();
-
- if (t >= oldt && t >= ab.getHeight()) {
- ab.hide();
- } else if (t <= ab.getHeight() || oldt - t >= 10) {
- ab.show();
- }
-
- }
- });
- }
-
if (scrollView != null && m_fab != null) {
if (m_prefs.getBoolean("enable_article_fab", true)) {
scrollView.setOnTouchListener(new ShowHideOnScroll(m_fab));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
index 811cc015..d488a42b 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
@@ -43,6 +43,13 @@ import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import androidx.core.app.ActivityCompat;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.view.ViewCompat;
+import androidx.cursoradapter.widget.SimpleCursorAdapter;
+import androidx.fragment.app.Fragment;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
import com.amulyakhare.textdrawable.TextDrawable;
import com.amulyakhare.textdrawable.util.ColorGenerator;
import com.bumptech.glide.Glide;
@@ -70,12 +77,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.TimeZone;
-import androidx.core.app.ActivityCompat;
-import androidx.core.app.ActivityOptionsCompat;
-import androidx.core.view.ViewCompat;
-import androidx.cursoradapter.widget.SimpleCursorAdapter;
-import androidx.fragment.app.Fragment;
-import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import jp.wasabeef.glide.transformations.CropCircleTransformation;
public class OfflineHeadlinesFragment extends Fragment implements OnItemClickListener, AbsListView.OnScrollListener {
@@ -105,9 +106,6 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
private boolean m_compactLayoutMode = false;
private ListView m_list;
- private int m_listPreviousVisibleItem;
-
- boolean m_forcePhoneLayout;
public void initialize(int feedId, boolean isCat, boolean compactMode) {
m_feedId = feedId;
@@ -358,8 +356,6 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
m_list = view.findViewById(R.id.headlines_list);
- m_forcePhoneLayout = m_prefs.getBoolean("force_phone_layout", false);
-
FloatingActionButton fab = view.findViewById(R.id.headlines_fab);
fab.setVisibility(View.GONE);
@@ -1323,20 +1319,6 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
}
}
}
-
- if (m_forcePhoneLayout || !m_activity.isTablet()) {
- if (m_adapter.getCount() > 0) {
- if (firstVisibleItem > m_listPreviousVisibleItem) {
- m_activity.getSupportActionBar().hide();
- } else if (firstVisibleItem < m_listPreviousVisibleItem) {
- m_activity.getSupportActionBar().show();
- }
- } else {
- m_activity.getSupportActionBar().show();
- }
-
- m_listPreviousVisibleItem = firstVisibleItem;
- }
}
@Override
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java
deleted file mode 100644
index d7fafc80..00000000
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.fox.ttrss.util;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.webkit.WebView;
-
-public class NoChildFocusScrollView extends NotifyingScrollView {
-
- 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);
- }
-}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java
deleted file mode 100644
index e128856f..00000000
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.fox.ttrss.util;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.ScrollView;
-
-/**
- * @author Cyril Mottier
- */
-public class NotifyingScrollView extends ScrollView {
-
- /**
- * @author Cyril Mottier
- */
- public interface OnScrollChangedListener {
- void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt);
- }
-
- private OnScrollChangedListener mOnScrollChangedListener;
-
- public NotifyingScrollView(Context context) {
- super(context);
- }
-
- public NotifyingScrollView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public NotifyingScrollView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onScrollChanged(int l, int t, int oldl, int oldt) {
- super.onScrollChanged(l, t, oldl, oldt);
- if (mOnScrollChangedListener != null) {
- mOnScrollChangedListener.onScrollChanged(this, l, t, oldl, oldt);
- }
- }
-
- public void setOnScrollChangedListener(OnScrollChangedListener listener) {
- mOnScrollChangedListener = listener;
- }
-
-} \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml b/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml
index e9cfdc35..157ad794 100644
--- a/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml
+++ b/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml
@@ -5,12 +5,28 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
- <FrameLayout
- android:id="@+id/article_fragment"
+ <androidx.coordinatorlayout.widget.CoordinatorLayout
+ xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="?articleBackground">
- </FrameLayout>
+ android:layout_height="match_parent">
+
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <include layout="@layout/toolbar" android:id="@+id/toolbar" />
+
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <FrameLayout
+ android:id="@+id/article_fragment"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?articleBackground">
+ </FrameLayout>
+
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
<FrameLayout
android:id="@+id/headlines_fragment"
@@ -20,5 +36,4 @@
android:background="?headlinesBackground">
</FrameLayout>
- <include layout="@layout/toolbar" android:id="@+id/toolbar" />
</FrameLayout> \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml b/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml
index de3db618..d63d9fb9 100644
--- a/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml
+++ b/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml
@@ -5,7 +5,29 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
- <FrameLayout
+ <androidx.coordinatorlayout.widget.CoordinatorLayout
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <include layout="@layout/toolbar" android:id="@+id/toolbar" />
+
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <FrameLayout
+ android:id="@+id/headlines_fragment"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?headlinesBackground" />
+
+ </androidx.coordinatorlayout.widget.CoordinatorLayout>
+
+ <!-- <FrameLayout
android:fitsSystemWindows="true"
android:animateLayoutChanges="true"
android:layout_width="match_parent"
@@ -19,7 +41,7 @@
<include layout="@layout/toolbar" android:id="@+id/toolbar" />
- </FrameLayout>
+ </FrameLayout> -->
<org.fox.ttrss.util.ScrimInsetsFrameLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_article.xml b/org.fox.ttrss/src/main/res/layout/fragment_article.xml
index da8b13d7..e9fea26c 100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_article.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_article.xml
@@ -10,32 +10,23 @@
android:id="@+id/article_fullscreen_video"
android:visibility="invisible"
android:layout_width="fill_parent"
- android:layout_height="fill_parent"></FrameLayout>
+ android:layout_height="fill_parent"/>
- <org.fox.ttrss.util.NoChildFocusScrollView
- android:id="@+id/article_scrollview"
- android:scrollbars="vertical|horizontal"
+ <com.otaliastudios.nestedscrollcoordinatorlayout.NestedScrollCoordinatorLayout
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fillViewport="false" >
+ android:layout_height="match_parent">
- <LinearLayout
+ <com.google.android.material.appbar.AppBarLayout
+ android:background="?articleHeader"
+ android:elevation="0dp"
+ app:elevation="0dp"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
-
- <!-- hack for hiding actionbar on small devices -->
- <FrameLayout
- android:id="@+id/article_heading_spacer"
- android:visibility="gone"
- android:layout_marginTop="@dimen/abc_action_bar_default_height_material"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
+ android:layout_height="wrap_content">
<LinearLayout
+ app:layout_scrollFlags="scroll|enterAlways"
android:padding="16dp"
android:id="@+id/article_header"
- android:background="?articleHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -87,14 +78,13 @@
android:layout_weight="1"
android:fontFamily="sans-serif-light"
android:paddingTop="8dp"
- android:text="24 comments"
android:textColor="?headlineSecondaryTextColor"
android:textSize="12sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_weight="1"
+ android:layout_weight="1"
android:paddingTop="8dp">
<TextView
@@ -105,7 +95,6 @@
android:ellipsize="middle"
android:singleLine="true"
android:fontFamily="sans-serif-light"
- android:text="Example Feed"
android:textColor="?headlineSecondaryTextColor"
android:textSize="12sp" />
@@ -117,7 +106,6 @@
android:gravity="right"
android:layout_marginLeft="10dp"
android:fontFamily="sans-serif-light"
- android:text="Jan 01, 12:00"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?headlineSecondaryTextColor"
android:textSize="12sp" />
@@ -126,35 +114,52 @@
</LinearLayout>
- <View
- android:layout_gravity="top|center_horizontal"
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:background="?articleHeaderSeparator"/>
+ </com.google.android.material.appbar.AppBarLayout>
- <TextView
- android:id="@+id/note"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:background="?articleNoteBackground"
- android:textColor="?articleNoteTextColor"
- android:textSize="12sp"
- android:text="[Article note]"
- android:paddingLeft="16dp"
- android:paddingTop="8dp"
- android:paddingRight="16dp"
- android:paddingBottom="8dp" />
-
- <org.fox.ttrss.util.LessBrokenWebView
- android:layout_margin="16dp"
- android:id="@+id/article_content"
- android:scrollbars="none"
+ <androidx.core.widget.NestedScrollView
+ android:id="@+id/article_scrollview"
+ android:scrollbars="vertical|horizontal"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:fillViewport="false" >
+
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content" />
+ android:layout_height="match_parent"
+ android:orientation="vertical" >
+
+ <View
+ android:layout_gravity="top|center_horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:background="?articleHeaderSeparator"/>
+
+ <TextView
+ android:id="@+id/note"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:background="?articleNoteBackground"
+ android:textColor="?articleNoteTextColor"
+ android:textSize="12sp"
+ android:text="[Article note]"
+ android:paddingLeft="16dp"
+ android:paddingTop="8dp"
+ android:paddingRight="16dp"
+ android:paddingBottom="8dp" />
+
+ <org.fox.ttrss.util.LessBrokenWebView
+ android:layout_margin="16dp"
+ android:id="@+id/article_content"
+ android:scrollbars="none"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ </LinearLayout>
+ </androidx.core.widget.NestedScrollView>
- </LinearLayout>
- </org.fox.ttrss.util.NoChildFocusScrollView>
+ </com.otaliastudios.nestedscrollcoordinatorlayout.NestedScrollCoordinatorLayout>
<com.shamanland.fab.FloatingActionButton
android:id="@+id/article_fab"
@@ -170,7 +175,6 @@
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:text="[status message]"
android:id="@+id/article_status_message"
android:gravity="center"
android:visibility="gone" />
diff --git a/org.fox.ttrss/src/main/res/layout/toolbar.xml b/org.fox.ttrss/src/main/res/layout/toolbar.xml
index 99235ca2..f5fb7654 100755
--- a/org.fox.ttrss/src/main/res/layout/toolbar.xml
+++ b/org.fox.ttrss/src/main/res/layout/toolbar.xml
@@ -4,6 +4,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:elevation="4dp"
+ app:layout_scrollFlags="scroll|enterAlways"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:layout_height="wrap_content"