How to put Toolbar in mutliple Fragments using Kotlin(如何使用Kotline将工具栏放入多个片段中)
本文介绍了如何使用Kotline将工具栏放入多个片段中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在做一个项目,有很多碎片..请有没有方法可以创建显示在所有片段上的工具栏,我在YouTube上看了一个教程,他们在那里使用了navController,但当我尝试执行相同的操作时,收到了Unresolved reference
错误..
请记住,我希望不同的片段具有不同的图标。
那么,我该怎么做呢?或者我必须在每个片段.xml文件中显式创建工具栏?
以下是我的MainActivity.kt文件,以及我试图实现的不完整代码:
package com.example.a500months
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.appcompat.app.AppCompatDelegate
import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Assign Toolbar to Actionbar
setSupportActionBar(findViewById(R.id.material_Toolbar))
// To make Toolbar show back button (!!!I get the error here!!!)
val navController = findNavController
这是我的.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/material_Toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:id="@+id/fl_fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="65dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/bottom_nav_menu" />
</androidx.constraintlayout.widget.ConstraintLayout>
任何建议、提示、回答……我都很感激。
提前感谢您的帮助..
推荐答案
下面的代码是您的Common_Toolbar.xml
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/_50sdp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clParent"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/viewToolbar"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="@dimen/_16sdp"
android:layout_marginEnd="@dimen/_10sdp"
android:background="@color/black"
app:layout_constraintTop_toBottomOf="@+id/txtToolbarName" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/imgToolbarCancel"
android:layout_width="@dimen/_50sdp"
android:layout_height="@dimen/_40sdp"
android:src="@drawable/ic_basic_cancel"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/imgToolbarMainMenu"
android:layout_width="@dimen/_50sdp"
android:layout_height="@dimen/_40sdp"
android:src="@drawable/ic_basic_mainmenu"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/imgToolbarLeft"
android:layout_width="@dimen/_16sdp"
android:layout_height="@dimen/_16sdp"
android:src="@drawable/ic_back_btn"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txtToolbarName"
style="@style/TextView_regular_12_black_caps_bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_15sdp"
android:fontFamily="@font/lato_heavy"
android:text=""
android:textAllCaps="true"
app:layout_constraintBottom_toTopOf="@+id/viewToolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txtToolbarDone"
style="@style/TextView_regular_12_black_caps_bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/_13sdp"
android:text="@string/done"
android:textAllCaps="true"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.appcompat.widget.Toolbar>
这是一个mainActivity‘s.xml
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/include"
layout="@layout/common_fragment_header"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="56dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
在mainActivity中,您可以隐藏显示工具栏的额外内容
fun onSectionAttached(number: Int, title: String): Boolean {
return when (number) {
0 -> {
setViewVisible(
title,
0,
View.GONE,
View.GONE,
View.GONE,
View.GONE,
View.GONE,
View.VISIBLE
)
true
}
1 -> {
setViewVisible(
title,
1,
View.GONE,
View.GONE,
View.GONE,
View.GONE,
View.VISIBLE,
View.VISIBLE
)
true
}
else -> true
}
}
private fun setViewVisible(
title: String,
from: Int,
imgToolbarLeft: Int,
imgToolbarCancel: Int,
txtToolbarDone: Int,
viewToolbar: Int,
imgToolbarMainMenu: Int,
nav_view: Int
) {
binding.include.txtToolbarName.text = title
binding.include.txtToolbarDone.visibility = txtToolbarDone
binding.include.imgToolbarLeft.visibility = imgToolbarLeft
binding.include.imgToolbarCancel.visibility = imgToolbarCancel
binding.include.imgToolbarMainMenu.visibility = imgToolbarMainMenu
binding.include.viewToolbar.visibility = viewToolbar
binding.navView.visibility = nav_view
}
在片段中,您可以在带有收费栏编号的inActivityCreated()中添加工具栏
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
(context as MainActivity).onSectionAttached(1, resources.getString(R.string.your_string))
}
这篇关于如何使用Kotline将工具栏放入多个片段中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何使用Kotline将工具栏放入多个片段中
基础教程推荐
猜你喜欢
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01