我正在做一個專案,有很多片段..請問有什么方法可以創建出現在所有片段上的工具列,我在 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>
我很感激任何建議,提示,回答......任何東西。
在此先感謝您的幫助..
uj5u.com熱心網友回復:
您可以創建單獨的 toolbar.xml 并且這個 toolbar.xml 包含在您的 mainActivity 的 xml 中,它反映了您的所有片段。您還可以使用不同的片段管理在工具列中顯示隱藏額外內容。
uj5u.com熱心網友回復:
下面的代碼是你的 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))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/400196.html
標籤:安卓 科特林 android-fragments 工具栏 android工具栏
上一篇:通過Htaccess從Url中洗掉檔案夾的子檔案夾?
下一篇:使用navArgs將Fragment轉換為DialogFragment,如何從Fragment類外部導航到DialogFragment
