]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/res/layout/logcat_bottom_appbar.xml
Bump the target API to 36. https://redmine.stoutner.com/issues/1283
[PrivacyBrowserAndroid.git] / app / src / main / res / layout / logcat_bottom_appbar.xml
index 69b04087056f8b8f08517778e13392d44b0ce57f..e88f3c9f3367f0598da55439a7f33e6cf434b148 100644 (file)
@@ -1,28 +1,32 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright 2018-2023 Soren Stoutner <soren@stoutner.com>.
+  SPDX-License-Identifier: GPL-3.0-or-later
+  SPDX-FileCopyrightText: 2018-2024 Soren Stoutner <soren@stoutner.com>
 
-  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+  This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android/>.
 
-  Privacy Browser Android is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
+  This program is free software: you can redistribute it and/or modify it under
+  the terms of the GNU General Public License as published by the Free Software
+  Foundation, either version 3 of the License, or (at your option) any later
+  version.
 
-  Privacy Browser Android is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
+  This program is distributed in the hope that it will be useful, but WITHOUT
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+  details.
 
-  You should have received a copy of the GNU General Public License
-  along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>. -->
+  You should have received a copy of the GNU General Public License along with
+  this program.  If not, see <https://www.gnu.org/licenses/>. -->
 
+<!-- `android:fitsSystemWindows="true"` is required for correct layout starting with API >= 35 (Android 15) -->
 <androidx.coordinatorlayout.widget.CoordinatorLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_height="match_parent"
-    android:layout_width="match_parent" >
+    android:layout_width="match_parent"
+    android:fitsSystemWindows="true" >
 
     <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout.  `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
     <LinearLayout
             android:layout_width="match_parent"
             android:layout_weight="1" >
 
-            <ScrollView
-                android:id="@+id/scrollview"
+            <WebView
+                android:id="@+id/logcat_webview"
                 android:layout_height="wrap_content"
-                android:layout_width="match_parent" >
-
-                <TextView
-                    android:id="@+id/logcat_textview"
-                    android:layout_height="wrap_content"
-                    android:layout_width="match_parent"
-                    android:layout_margin="10dp"
-                    android:textIsSelectable="true" />
-            </ScrollView>
+                android:layout_width="match_parent" />
         </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
 
         <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
                 android:id="@+id/toolbar"
                 android:layout_height="wrap_content"
                 android:layout_width="match_parent" />
+
+            <!-- The search linear layout.  It is initially `visibility="gone"` and is only displayed when requested. -->
+            <LinearLayout
+                android:id="@+id/search_linearlayout"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:orientation="horizontal"
+                android:visibility="gone" >
+
+                <!-- `android:imeOptions="actionDone"` sets the keyboard to have a `check mark` key instead of a `new line` key. -->
+                <EditText
+                    android:id="@+id/search_edittext"
+                    android:layout_height="wrap_content"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_marginStart="8dp"
+                    android:layout_marginEnd="4dp"
+                    android:hint="@string/search"
+                    android:lines="1"
+                    android:imeOptions="actionDone"
+                    android:inputType="text"
+                    tools:ignore="Autofill" />
+
+                <TextView
+                    android:id="@+id/search_count_textview"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:layout_marginStart="4dp"
+                    android:layout_marginEnd="4dp"
+                    android:text="@string/zero_of_zero" />
+
+                <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
+                <ImageView
+                    android:id="@+id/search_previous"
+                    android:layout_height="35dp"
+                    android:layout_width="35dp"
+                    android:layout_marginStart="4dp"
+                    android:layout_marginEnd="4dp"
+                    android:layout_gravity="center_vertical"
+                    android:src="@drawable/previous"
+                    android:background="?attr/selectableItemBackground"
+                    android:contentDescription="@string/previous"
+                    android:onClick="searchPrevious"
+                    app:tint="@color/blue_icon" />
+
+                <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
+                <ImageView
+                    android:id="@+id/search_next"
+                    android:layout_height="35dp"
+                    android:layout_width="35dp"
+                    android:layout_marginStart="4dp"
+                    android:layout_marginEnd="4dp"
+                    android:layout_gravity="center_vertical"
+                    android:src="@drawable/next"
+                    android:background="?attr/selectableItemBackground"
+                    android:contentDescription="@string/next"
+                    android:onClick="searchNext"
+                    app:tint="@color/blue_icon" />
+
+                <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
+                <ImageView
+                    android:id="@+id/close_search"
+                    android:layout_height="35dp"
+                    android:layout_width="35dp"
+                    android:layout_marginStart="4dp"
+                    android:layout_marginEnd="8dp"
+                    android:layout_gravity="center_vertical"
+                    android:src="@drawable/close"
+                    android:background="?attr/selectableItemBackground"
+                    android:contentDescription="@string/close"
+                    android:onClick="closeSearch"
+                    app:tint="@color/blue_icon" />
+            </LinearLayout>
         </com.google.android.material.appbar.AppBarLayout>
     </LinearLayout>
 </androidx.coordinatorlayout.widget.CoordinatorLayout>