Browse Source

Merge pull request #10497 from nextcloud/fix/empty-view-scrolling

Allow scrolling empty views
Álvaro Brey 2 năm trước cách đây
mục cha
commit
a920ba3c27

BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.FolderPickerActivityIT_open.png


+ 1 - 1
app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -124,7 +124,7 @@ public class ExtendedListFragment extends Fragment implements
     protected SwipeRefreshLayout mRefreshListLayout;
     protected MaterialButton mSortButton;
     protected MaterialButton mSwitchGridViewButton;
-    protected LinearLayout mEmptyListContainer;
+    protected ViewGroup mEmptyListContainer;
     protected TextView mEmptyListMessage;
     protected TextView mEmptyListHeadline;
     protected ImageView mEmptyListIcon;

+ 0 - 15
app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -952,8 +952,6 @@ public class OCFileListFragment extends ExtendedListFragment implements
                 int position = getCommonAdapter().getItemPosition(file);
 
                 if (file.isFolder()) {
-                    resetHeaderScrollingState();
-
                     if (file.isEncrypted()) {
                         User user = ((FileActivity) mContainerActivity).getUser().orElseThrow(RuntimeException::new);
 
@@ -1043,13 +1041,11 @@ public class OCFileListFragment extends ExtendedListFragment implements
                         ((FileDisplayActivity) mContainerActivity).startPdfPreview(file);
                     } else if (PreviewTextFileFragment.canBePreviewed(file)) {
                         setFabVisible(false);
-                        resetHeaderScrollingState();
                         ((FileDisplayActivity) mContainerActivity).startTextPreview(file, false);
                     } else if (file.isDown()) {
                         if (PreviewMediaFragment.canBePreviewed(file)) {
                             // media preview
                             setFabVisible(false);
-                            resetHeaderScrollingState();
                             ((FileDisplayActivity) mContainerActivity).startMediaPreview(file, 0, true, true, false);
                         } else {
                             mContainerActivity.getFileOperationsHelper().openFile(file);
@@ -1063,7 +1059,6 @@ public class OCFileListFragment extends ExtendedListFragment implements
                         if (PreviewMediaFragment.canBePreviewed(file) && !file.isEncrypted()) {
                             // stream media preview on >= NC14
                             setFabVisible(false);
-                            resetHeaderScrollingState();
                             ((FileDisplayActivity) mContainerActivity).startMediaPreview(file, 0, true, true, true);
                         } else if (EditorUtils.isEditorAvailable(requireContext().getContentResolver(),
                                                                  accountManager.getUser(),
@@ -1936,16 +1931,6 @@ public class OCFileListFragment extends ExtendedListFragment implements
         }
     }
 
-    private void resetHeaderScrollingState() {
-        if (requireActivity() instanceof FileDisplayActivity) {
-            AppBarLayout appBarLayout = ((FileDisplayActivity) requireActivity()).findViewById(R.id.appbar);
-
-            if (appBarLayout != null) {
-                appBarLayout.setExpanded(true);
-            }
-        }
-    }
-
     public boolean isEmpty(){
         return  mAdapter == null || mAdapter.isEmpty();
     }

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -119,7 +119,7 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
     @Inject ClientFactory clientFactory;
     @Inject UserAccountManager accountManager;
     FragmentPreviewMediaBinding binding;
-    LinearLayout emptyListView;
+    private ViewGroup emptyListView;
     private ExoPlayer exoPlayer;
 
     /**

+ 54 - 49
app/src/main/res/layout/empty_list.xml

@@ -17,60 +17,65 @@
   You should have received a copy of the GNU Affero General Public
   License along with this program. If not, see <http://www.gnu.org/licenses/>.
 -->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/empty_list_view"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/empty_list_view"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_gravity="center"
-    android:layout_margin="@dimen/standard_margin"
-    android:gravity="center_horizontal"
-    android:orientation="vertical"
-    android:paddingTop="@dimen/standard_double_margin">
+    android:layout_height="match_parent">
 
-    <ImageView
-        android:id="@+id/empty_list_icon"
-        android:layout_width="@dimen/empty_list_icon_layout_width"
-        android:layout_height="@dimen/empty_list_icon_layout_height"
-        android:contentDescription="@string/file_list_folder"
-        android:src="@drawable/ic_list_empty_folder"
-        android:visibility="gone"
-        tools:visibility="visible" />
-
-    <TextView
-        android:id="@+id/empty_list_view_headline"
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:ellipsize="end"
-        android:gravity="center"
-        android:maxLines="2"
-        android:paddingTop="@dimen/standard_padding"
-        android:paddingBottom="@dimen/standard_half_padding"
-        android:text="@string/file_list_loading"
-        android:textSize="26sp" />
+        android:layout_gravity="top"
+        android:layout_margin="@dimen/standard_margin"
+        android:gravity="center_horizontal"
+        android:orientation="vertical"
+        android:paddingTop="@dimen/standard_double_margin">
 
-    <TextView
-        android:id="@+id/empty_list_view_text"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:ellipsize="end"
-        android:gravity="center"
-        android:paddingTop="@dimen/standard_half_padding"
-        android:paddingBottom="@dimen/standard_half_padding"
-        android:text="@string/file_list_empty"
-        android:visibility="gone"
-        tools:visibility="visible" />
+        <ImageView
+            android:id="@+id/empty_list_icon"
+            android:layout_width="@dimen/empty_list_icon_layout_width"
+            android:layout_height="@dimen/empty_list_icon_layout_height"
+            android:contentDescription="@string/file_list_folder"
+            android:src="@drawable/ic_list_empty_folder"
+            android:visibility="gone"
+            tools:visibility="visible" />
 
-    <com.google.android.material.button.MaterialButton
-        android:id="@+id/empty_list_view_action"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="@dimen/standard_half_margin"
-        android:theme="@style/Button.Primary"
-        android:visibility="gone"
-        app:cornerRadius="@dimen/button_corner_radius"
-        tools:visibility="visible" />
-</LinearLayout>
+        <TextView
+            android:id="@+id/empty_list_view_headline"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:ellipsize="end"
+            android:gravity="center"
+            android:maxLines="2"
+            android:paddingTop="@dimen/standard_padding"
+            android:paddingBottom="@dimen/standard_half_padding"
+            android:text="@string/file_list_loading"
+            android:textSize="26sp" />
+
+        <TextView
+            android:id="@+id/empty_list_view_text"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:ellipsize="end"
+            android:gravity="center"
+            android:paddingTop="@dimen/standard_half_padding"
+            android:paddingBottom="@dimen/standard_half_padding"
+            android:text="@string/file_list_empty"
+            android:visibility="gone"
+            tools:visibility="visible" />
+
+        <com.google.android.material.button.MaterialButton
+            android:id="@+id/empty_list_view_action"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/standard_half_margin"
+            android:theme="@style/Button.Primary"
+            android:visibility="gone"
+            app:cornerRadius="@dimen/button_corner_radius"
+            tools:visibility="visible" />
+    </LinearLayout>
+</androidx.core.widget.NestedScrollView>