Collapsing Toolbar for entry activity

This commit is contained in:
J-Jamet
2019-08-05 12:25:48 +02:00
parent 6f1dc14bdc
commit 970b966bcb
6 changed files with 80 additions and 52 deletions

View File

@@ -25,6 +25,7 @@ import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.support.design.widget.CollapsingToolbarLayout
import android.support.v7.app.AlertDialog
import android.support.v7.widget.Toolbar
import android.util.Log
@@ -32,7 +33,6 @@ import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.education.EntryActivityEducation
@@ -54,8 +54,8 @@ import com.kunzisoft.keepass.utils.Util
class EntryActivity : LockingHideActivity() {
private var collapsingToolbarLayout: CollapsingToolbarLayout? = null
private var titleIconView: ImageView? = null
private var titleView: TextView? = null
private var entryContentsView: EntryContentsView? = null
private var toolbar: Toolbar? = null
@@ -109,8 +109,8 @@ class EntryActivity : LockingHideActivity() {
invalidateOptionsMenu()
// Get views
collapsingToolbarLayout = findViewById(R.id.toolbar_layout)
titleIconView = findViewById(R.id.entry_icon)
titleView = findViewById(R.id.entry_title)
entryContentsView = findViewById(R.id.entry_contents)
entryContentsView?.applyFontVisibilityToFields(PreferencesUtil.fieldFontIsInVisibility(this))
@@ -144,7 +144,9 @@ class EntryActivity : LockingHideActivity() {
titleIconView?.assignDatabaseIcon(database.drawFactory, entry.icon, iconColor)
// Assign title text
titleView?.text = entry.getVisualTitle()
val entryTitle = entry.getVisualTitle()
collapsingToolbarLayout?.title = entryTitle
toolbar?.title = entryTitle
// Assign basic fields
entryContentsView?.assignUserName(entry.username)

View File

@@ -49,7 +49,7 @@ open class EntryCustomField(context: Context,
init {
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.view_entry_new_field, this)
inflater.inflate(R.layout.item_entry_new_field, this)
labelView = findViewById(R.id.title)
valueView = findViewById(R.id.value)

View File

@@ -17,65 +17,74 @@
You should have received a copy of the GNU General Public License
along with KeePass DX. If not, see <http://www.gnu.org/licenses/>.
-->
<android.support.constraint.ConstraintLayout
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar_coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar"
android:title="@string/app_name"
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:theme="?attr/toolbarAppearance"
app:popupTheme="?attr/toolbarPopupAppearance"
android:elevation="4dp"
tools:targetApi="lollipop"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/title_block"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:translationZ="10dp"
style="@style/KeepassDXStyle.TextAppearance.Default">
<android.support.v7.widget.AppCompatImageView android:id="@+id/entry_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:scaleType="fitXY"/>
<android.support.v7.widget.AppCompatTextView android:id="@+id/entry_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:maxLines="1"
android:singleLine="true"
android:gravity="start|center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_gravity="start|center_vertical"
style="@style/KeepassDXStyle.TextAppearance.Title.TextOnPrimary" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
android:layout_height="@dimen/toolbar_parallax_height"
android:fitsSystemWindows="true">
<ScrollView
<android.support.design.widget.CollapsingToolbarLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="32dp"
app:expandedTitleGravity="center_horizontal|bottom"
app:expandedTitleMarginEnd="32dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<LinearLayout
android:id="@+id/title_block"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_collapseMode="parallax"
android:orientation="vertical"
android:background="@drawable/background_repeat"
android:gravity="center"
style="@style/KeepassDXStyle.TextAppearance.Default">
<android.support.v7.widget.AppCompatImageView
android:id="@+id/entry_icon"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginBottom="28dp"
android:scaleType="fitXY"/>
</LinearLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/transparent"
app:theme="?attr/toolbarAppearance"
app:popupTheme="?attr/toolbarPopupAppearance"
app:layout_collapseMode="pin"
tools:targetApi="lollipop">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/entry_scroll"
android:layout_width="0dp"
android:layout_height="0dp"
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarStyle="insideOverlay"
app:layout_constraintTop_toBottomOf="@+id/toolbar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintWidth_percent="@dimen/content_percent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<com.kunzisoft.keepass.view.EntryContentsView
android:id="@+id/entry_contents"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
</ScrollView>
</android.support.v4.widget.NestedScrollView>
</android.support.constraint.ConstraintLayout>
</android.support.design.widget.CoordinatorLayout>

View File

@@ -9,5 +9,7 @@
<dimen name="content_percent">1</dimen>
<dimen name="toolbar_parallax_height">220dp</dimen>
<integer name="animation_duration">320</integer>
</resources>

View File

@@ -76,6 +76,9 @@
<item name="toolbarPopupAppearance">@style/KeepassDXStyle.Light.Toolbar.Popup</item>
<item name="toolbarBottomAppearance">@style/KeepassDXStyle.Toolbar.Night</item>
<item name="actionModeStyle">@style/KeepassDXStyle.ActionMode</item>
<!-- CollapsingToolbarLayout -->
<item name="expandedTitleTextAppearance">@style/KeepassDXStyle.Expanded.Title</item>
<item name="collapsedTitleTextAppearance">@style/KeepassDXStyle.Collapsed.Title</item>
<!-- White FAB -->
<item name="whiteFab">@style/KeepassDXStyle.Fab.White</item>
@@ -133,6 +136,9 @@
<item name="toolbarPopupAppearance">@style/KeepassDXStyle.Night.Toolbar.Popup</item>
<item name="toolbarBottomAppearance">@style/KeepassDXStyle.Toolbar.Night</item>
<item name="actionModeStyle">@style/KeepassDXStyle.ActionMode</item>
<!-- CollapsingToolbarLayout -->
<item name="expandedTitleTextAppearance">@style/KeepassDXStyle.Expanded.Title</item>
<item name="collapsedTitleTextAppearance">@style/KeepassDXStyle.Collapsed.Title</item>
<!-- White FAB -->
<item name="whiteFab">@style/KeepassDXStyle.Fab.White</item>
@@ -183,6 +189,15 @@
<item name="background">@color/green_dark</item>
</style>
<!-- CollapsingToolbarLayout -->
<style name="KeepassDXStyle.Expanded.Title" parent="KeepassDXStyle.TextAppearance.Title.TextOnPrimary">
<item name="android:textSize">28sp</item>
</style>
<style name="KeepassDXStyle.Collapsed.Title" parent="KeepassDXStyle.TextAppearance.Title.TextOnPrimary">
<item name="android:textSize">18sp</item>
</style>
<!-- Dialog -->
<style name="KeepassDXStyle.Night.Dialog" parent="Theme.AppCompat.Dialog.Alert">
<item name="colorAccent">@color/orange</item>