Я пытаюсь реализовать пользовательский фрагмент панели навигации в моем проекте, но я не могу установить заголовок и левую кнопку.В этом фрагменте я использую textview, чтобы установить значок и заголовок.Я знаю, что могу использовать настраиваемую панель инструментов, но я не хочу использовать настраиваемую панель инструментов, поэтому использую фрагмент панели навигации, и я могу использовать этот фрагмент навигации в качестве панели инструментов там, где мне нужно, и установить левую кнопку, правую кнопку и все ниже - мой NavigationBarFragment: -
class NavigationBarFragment : Fragment(), View.OnClickListener {
lateinit var leftButton: TextView
lateinit var titleTextView: TextView
private var buttonChangeListener: ButtonImageChangeListener? = null
interface ButtonImageChangeListener {
fun changeMenuButtonImage()
}
fun newInstance(title: String, isLeft: Boolean): NavigationBarFragment {
val navigationBarFragment = NavigationBarFragment()
val bundle = Bundle()
bundle.putString("title", title)
bundle.putBoolean("isLeft", isLeft)
navigationBarFragment.arguments = bundle
return navigationBarFragment
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_navigation_bar, container, false)
leftButton = view!!.findViewById(R.id.leftButton)
titleTextView = view!!.findViewById(R.id.title)
titleTextView.setText(arguments!!.getString("title"))
if (arguments!!.getBoolean("isLeft")) {
leftButton.visibility = View.VISIBLE
leftButton.setOnClickListener(this)
} else {
leftButton.visibility = View.GONE
}
}
interface navigationButtonListener {
fun leftButtonPressed()
}
private var listener: navigationButtonListener? = null
fun getListener(): navigationButtonListener? {
return listener
}
fun setListener(listener: navigationButtonListener) {
this.listener = listener
}
fun getButtonChangeListener(): ButtonImageChangeListener? {
return buttonChangeListener
}
fun setButtonChangeListener(buttonChangeListener: ButtonImageChangeListener) {
this.buttonChangeListener = buttonChangeListener
}
override fun onClick(v: View?) {
if (v != null) {
if (v.getId() == R.id.title) run {
} else if (v!!.getId() == R.id.leftButton) {
if (this.listener != null) {
this.listener!!.leftButtonPressed()
}
}
}
}
}
ниже приведен метод, который я реализую в Деятельности:
private var navigationBar: NavigationBarFragment? = null
private fun loadNavigationbar() {
navigationBar = NavigationBarFragment().newInstance("Report",true)
navigationBar?.setListener(this)
navigationBar?.setButtonChangeListener(object : NavigationBarFragment.ButtonImageChangeListener {
override fun changeMenuButtonImage() {
//title
navigationBar!!.titleTextView.setTextColor(resources.getColor(R.color.colorPrimary))
//navigationBar!!.titleTextView.setTypeface(Application.HelveticaNeue_Medium)
var aa= navigationBar!!.titleTextView.text
navigationBar!!.titleTextView.setText("Report Activity")
//Menu Button
navigationBar!!.leftButton.setText(resources.getResourceName(R.drawable.ic_navigate_back))
// navigationBar.leftButton.setTypeface(Application.FONT_AWESOME)
navigationBar!!.leftButton.setTextSize(24F)
navigationBar!!.leftButton.setTextColor(resources.getColor(R.color.colorPrimary))
navigationBar!!.leftButton.setPadding(15, 5, 15, 5)
navigationBar!!.leftButton.setVisibility(View.VISIBLE)
navigationBar!!.navigationBarBaseLayout.setBackgroundColor(resources.getColor(R.color.white))
val ssbProfile = SpannableStringBuilder(" ")
ssbProfile.setSpan(ImageSpan(this@ReportActivity, R.drawable.ic_navigate_back), 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
navigationBar!!.leftButton.setText(ssbProfile, TextView.BufferType.SPANNABLE)
navigationBar!!.leftButton.setTextSize(32F)
navigationBar!!.leftButton.setTextColor(resources.getColor(R.color.colorPrimary))
navigationBar!!.leftButton.setPadding(15, 5, 15, 5)
}
})
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.add(R.id.navigationBar, this!!.navigationBar!!)
fragmentTransaction.commit()
}
Ниже приведен мой XML-код: -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navigationBarBaseLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<TextView
android:id="@+id/leftButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:text="C"
android:textColor="#FFFFFF"
android:textSize="48dp" />
<TextView
android:id="@id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:ellipsize="end"
android:maxLength="30"
android:singleLine="true"
android:text="CATELOGUE"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/rightFirstButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:layout_toLeftOf="@+id/rightSecondButton"
android:text="c"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/rightSecondButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:layout_toLeftOf="@+id/rightThirdButton"
android:text="c"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/rightThirdButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:text="c"
android:textColor="#FFFFFF"
android:textSize="20dp" />