mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
The commit primarily fixes a few overlapping issues caused by the window inset handling. Previously, there were two main issues: * Because setTransparentNavigationBar() checked for portrait mode, the inset logic never executed in landscape mode. This caused the app to overlap the status bar and navigation bar. * The inset logic did not have handling for displayCutout insets. In landscape mode, this would cause the app to overlap the notch or camera hole punch area on phones. In addition to fixing those issues, this commit simplifies the inset logic a bit: * applyWindowInsets() now accepts an EnumSet of WindowInsetPosition to avoid needing to duplicate logic for the various position combinations. * Insets are now applied to the main container in the layout instead of individual elements where possible. This eliminates the need for the previous manual IME height handling logic in BOTTOM_IME vs TOP_BOTTOM_IME (for avoiding the insets being applied twice). * Since insets are now applied to the main layout container, applyWindowInsets() now takes systemBars, displayCutout, and ime all into consideration. This should avoid all possible overlapping. * Add support for using padding instead of margins for insets. This is used for GroupActivity's navigation drawer, where Material design intends for the drawer background to be drawn behind system bars. Signed-off-by: Andrew Gunnerson <accounts+github@chiller3.com>
199 lines
9.2 KiB
XML
199 lines
9.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Copyright 2019 Jeremy Jamet / Kunzisoft.
|
|
|
|
This file is part of KeePassDX.
|
|
|
|
KeePassDX 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.
|
|
|
|
KeePassDX 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 KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
|
-->
|
|
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/activity_entry_container"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:filterTouchesWhenObscured="true">
|
|
|
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
android:id="@+id/toolbar_coordinator"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent">
|
|
|
|
<com.google.android.material.appbar.AppBarLayout
|
|
android:id="@+id/app_bar"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content">
|
|
|
|
<com.google.android.material.appbar.CollapsingToolbarLayout
|
|
android:id="@+id/toolbar_layout"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
app:expandedTitleGravity="center_horizontal|bottom"
|
|
app:expandedTitleMarginStart="@dimen/default_margin"
|
|
app:expandedTitleMarginEnd="@dimen/default_margin"
|
|
app:expandedTitleMarginBottom="24dp"
|
|
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
|
|
|
|
<FrameLayout
|
|
android:id="@+id/title_block"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:minHeight="160dp"
|
|
app:layout_collapseMode="parallax"
|
|
android:orientation="vertical"
|
|
android:background="@drawable/background_repeat"
|
|
android:gravity="center"
|
|
android:paddingBottom="12dp">
|
|
<androidx.appcompat.widget.AppCompatImageView
|
|
android:id="@+id/entry_icon"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_margin="4dp"
|
|
android:src="@drawable/ic_blank_32dp"
|
|
style="@style/KeepassDXStyle.Icon"
|
|
android:layout_gravity="center"/>
|
|
</FrameLayout>
|
|
<com.google.android.material.appbar.MaterialToolbar
|
|
android:id="@+id/toolbar"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
style="@style/KeepassDXStyle.Toolbar.Transparent"
|
|
app:layout_collapseMode="pin" />
|
|
|
|
<com.google.android.material.progressindicator.LinearProgressIndicator
|
|
android:id="@+id/entry_progress"
|
|
android:visibility="gone"
|
|
android:indeterminate="false"
|
|
app:indicatorColor="?attr/colorSecondary"
|
|
android:progress="10"
|
|
android:max="30"
|
|
android:layout_gravity="bottom"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content" />
|
|
|
|
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
|
</com.google.android.material.appbar.AppBarLayout>
|
|
|
|
<androidx.core.widget.NestedScrollView
|
|
android:id="@+id/entry_scroll"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:scrollbarStyle="insideOverlay"
|
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
|
|
|
<androidx.constraintlayout.widget.ConstraintLayout
|
|
android:layout_width="match_parent"
|
|
android:layout_height="match_parent"
|
|
android:paddingBottom="48dp">
|
|
|
|
<androidx.appcompat.widget.AppCompatTextView
|
|
android:id="@+id/history_container"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:layout_constraintTop_toTopOf="parent"
|
|
android:visibility="gone"
|
|
android:background="?attr/colorSecondary"
|
|
android:padding="12dp"
|
|
android:textColor="?attr/colorOnSecondary"
|
|
android:text="@string/entry_history"/>
|
|
|
|
<androidx.recyclerview.widget.RecyclerView
|
|
android:id="@+id/entry_tags_list_view"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintEnd_toEndOf="parent"
|
|
android:paddingTop="12dp"
|
|
android:paddingStart="5dp"
|
|
android:paddingLeft="5dp"
|
|
android:paddingEnd="5dp"
|
|
android:paddingRight="5dp"
|
|
android:layout_gravity="center"
|
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
|
android:orientation="horizontal"
|
|
app:layout_constraintTop_toBottomOf="@+id/history_container"/>
|
|
|
|
<androidx.fragment.app.FragmentContainerView
|
|
android:id="@+id/entry_content"
|
|
android:name="com.kunzisoft.keepass.activities.fragments.EntryFragment"
|
|
android:layout_width="0dp"
|
|
android:layout_height="wrap_content"
|
|
app:layout_constraintWidth_percent="@dimen/content_percent"
|
|
app:layout_constraintTop_toBottomOf="@+id/entry_tags_list_view"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintEnd_toEndOf="parent"/>
|
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
|
</androidx.core.widget.NestedScrollView>
|
|
|
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
|
|
<androidx.constraintlayout.widget.ConstraintLayout
|
|
android:id="@+id/activity_entry_footer"
|
|
android:layout_width="match_parent"
|
|
android:layout_height="wrap_content"
|
|
app:layout_constraintBottom_toBottomOf="parent">
|
|
|
|
<com.google.android.material.tabs.TabLayout
|
|
android:id="@+id/entry_content_tab"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:minWidth="180dp"
|
|
android:background="@drawable/background_item_selection"
|
|
android:backgroundTint="@color/surface_selector"
|
|
android:layout_marginBottom="12dp"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintEnd_toEndOf="parent"
|
|
android:layout_gravity="bottom|center_horizontal"
|
|
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"
|
|
app:tabMode="fixed"
|
|
tools:targetApi="lollipop">
|
|
|
|
<com.google.android.material.tabs.TabItem
|
|
android:id="@+id/entry_content_tab_main"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:icon="@drawable/ic_view_list_white_24dp" />
|
|
|
|
<com.google.android.material.tabs.TabItem
|
|
android:id="@+id/entry_content_tab_advanced"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:icon="@drawable/ic_time_white_24dp" />
|
|
|
|
</com.google.android.material.tabs.TabLayout>
|
|
|
|
<include
|
|
layout="@layout/view_button_lock"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" />
|
|
|
|
<include layout="@layout/view_screenshot_mode_banner" />
|
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
|
<ProgressBar
|
|
android:id="@+id/loading"
|
|
android:layout_width="wrap_content"
|
|
android:layout_height="wrap_content"
|
|
android:layout_gravity="center"
|
|
android:indeterminate="true"
|
|
app:layout_constraintBottom_toBottomOf="parent"
|
|
app:layout_constraintEnd_toEndOf="parent"
|
|
app:layout_constraintStart_toStartOf="parent"
|
|
app:layout_constraintTop_toTopOf="parent" />
|
|
|
|
</androidx.constraintlayout.widget.ConstraintLayout>
|