【问题标题】:android kotlin fragment action bar titleandroid kotlin 片段操作栏标题
【发布时间】:2018-05-21 11:56:50
【问题描述】:
  • 问题1)如何在Fragment中设置action bar的标题?
  • 问题 2) 我的代码有什么问题?

MainActivity.kt

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

//        Action Bar
        val actionBar = supportActionBar
        actionBar!!.setDisplayShowHomeEnabled(true)
        actionBar.setBackgroundDrawable(ColorDrawable(Color.parseColor("#00FFFFFF")))
        actionBar.setIcon(R.drawable.title)
        actionBar.setDisplayShowTitleEnabled(false)

        createQponFragment()
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }

片段.kt

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        setHasOptionsMenu(true)


        val actionBar = (activity as MainActivity).supportActionBar

        actionBar!!.setDisplayShowTitleEnabled(true)
        actionBar!!.setTitle("Tutorial")

        return inflater.inflate(R.layout.fragment_me, container, false)
    }

模拟器显示我的片段页面根本没有标题!

【问题讨论】:

  • 标题在那里,问题是文字和背景都是白色的(它在那里,但从提供的屏幕截图中很难看到)。
  • 您对此有什么解决方案吗?面临同样的问题。

标签: android kotlin android-actionbar fragment title


【解决方案1】:

试试这个代码 在主要活动中创建一种方法来更新工具栏,如下面的代码..

fun updateToolbar(){

   when(FragmentController.getFrontFragmentTag(this)){
         FragmentController.EXAM_FRAGMENT->{
            mIndexMenu= INDEX_ADD
            updateToolbarTitle("Exam")
        }

    }
}

并为在所有其他方法中添加片段创建单独的类,例如 FragmentControl.kt.

       fun getFrontFragmentTag(activity: FragmentActivity?): String? {
        return activity?.supportFragmentManager?.findFragmentById(if (activity is Main2Activity) MAIN_ROOT else LOGIN_ROOT)?.tag
    }
        fun AppCompatActivity.addExamFragment(): Fragment {
        mFragment = ExamFragment()
        this.supportFragmentManager?.beginTransaction()?.replace(if (this is LoginActivity) LOGIN_ROOT else MAIN_ROOT, mFragment, EXAM_FRAGMENT)?.commit()
        return mFragment as ExamFragment
    }

并在代码下方的主要活动调用中添加片段..

                addExamFragment()

并在examFragment中的onCreate方法调用下面的代码来更新工具栏。

 (activity as Main2Activity).updateToolbar()

【讨论】:

    【解决方案2】:

    如果您想为片段设置静态标题,您可以执行以下任一操作:

    • 您可以在片段的布局 XML 中使用 android:label="Your Title" 设置标题:

       <fragment
           android:id="@+id/mainFragment"
           android:name="com.anselmdevelopment.si.MainFragment"
           android:label="Your Title"
           tools:layout="@layout/fragment_main" />
      
    • 或者您可以在设计选项卡的导航 XML 文件中执行此操作:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多