Android 选项卡布局未显示选项卡标题

Android 选项卡布局未显示选项卡标题,android,android-fragments,kotlin,android-tablayout,Android,Android Fragments,Kotlin,Android Tablayout,我试图以编程方式设置选项卡布局的名称。我已经尝试了所有可能的方法,但我认为我错过了一些东西。这是我的适配器、片段和XML布局代码。我也添加了一些评论部分。请建议是否可以使用它。如果可能,请在kotlin中建议代码 class EventsFragment : Fragment(), ViewPager.OnPageChangeListener { private var eventDayStatusTabAdapter: EventDayStatusTabAdapter? = null

我试图以编程方式设置选项卡布局的名称。我已经尝试了所有可能的方法,但我认为我错过了一些东西。这是我的适配器、片段和XML布局代码。我也添加了一些评论部分。请建议是否可以使用它。如果可能,请在kotlin中建议代码

class EventsFragment : Fragment(), ViewPager.OnPageChangeListener {

    private var eventDayStatusTabAdapter: EventDayStatusTabAdapter? = null
    protected lateinit var mActivity: AppCompatActivity


    companion object {
        fun newInstance(): EventsFragment =
            EventsFragment()
    }


    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_events, container, false)

        mActivity = activity as AppCompatActivity

        return view
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        doInitialSetup()
    }

    private fun doInitialSetup() {
        setUpLoanStatusTabAdapter()
    }


    private fun setUpLoanStatusTabAdapter() {
        val subTab = arguments?.getString("extraSubSection")
        val activeTabPosition = when (subTab) {
            "onGoing" -> 0
            "day1" -> 1
            "day2" -> 2
            "day"  -> 3
             else->   0
        }

        eventDayStatusTabAdapter = EventDayStatusTabAdapter(
            childFragmentManager, activeTabPosition
        )
        eventsViewPager.adapter = eventDayStatusTabAdapter

        //this is must for viewpager to work and enabling this will take out NAMES that you declared in xml
        eventsTabLayout.setupWithViewPager(eventsViewPager)
//        eventsTabLayout.removeAllTabs()

//        eventDayStatusTabAdapter?.let {
//            for (i in 0 until it.count) {
//                val tab = eventsTabLayout.newTab()
//                val tabName =
//                    mActivity.layoutInflater.inflate(R.layout.events_tab, eventsTabLayout, false) as TextView
//                tabName.text = resources.getStringArray(R.array.eventsDayName)[i]
//                tab.customView = tabName
//                eventsTabLayout.addTab(tab, i, 0 == i)
//                tabName.isSelected = 4 == i
//                if (0 == i) {
//                    tab.select()
//                }
//            }
//        }

        eventsViewPager.addOnPageChangeListener(this)
        eventsTabLayout.getTabAt(activeTabPosition)?.select()

    }

    override fun onPageScrollStateChanged(state: Int) {
        //Do nothing
    }

    override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
        //Do nothing
    }

    override fun onPageSelected(position: Int) {
        //Do nothing
    }

}





class EventDayStatusTabAdapter(efm: FragmentManager?, private var activePosition: Int?) :
    FragmentPagerAdapter(efm) {

    private val TAG = javaClass.name

    private var onGoing: OnGoing? = null
    private var day1: Day1? = null
    private var day2: Day2? = null
    private var day3: Day3? = null


    private val TAB_COUNT = 4

    private val tabTitles = arrayOf("ONGOING", "DAY 1", "DAY 2", "DAY 3")

    override fun getItem(position: Int): Fragment {
        when (position) {
            0 -> {
                return OnGoing.newInstance()
            }
            1 -> {
                return Day1.newInstance()
            }
            2 -> {
                return Day2.newInstance()
            }
            3 -> {
                return Day3.newInstance()
            }
            else -> {
                return OnGoing.newInstance()
            }
        }
    }

    override fun instantiateItem(container: ViewGroup, position: Int): Any {
        val fragment = super.instantiateItem(container, position)

        when (position) {
            0 -> {
                if (fragment is OnGoing) {
                    onGoing = OnGoing()
                }
            }
            1 -> {
                if (fragment is Day1) {
                    day1 = Day1()
                }
            }
            2 -> {
                if (fragment is Day2) {
                    day2 = Day2()
                }
            }
            3 -> {
                if (fragment is Day3) {
                    day3 = Day3()
                }
            }
            else -> {
                if (fragment is OnGoing) {
                    onGoing = OnGoing()
                }
            }
        }

        return fragment
    }

    override fun getCount(): Int {
        return TAB_COUNT
    }


    override fun getPageTitle(position: Int): CharSequence? {
        return tabTitles[position]
    }
}




<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/eventsBackgroundColor"
        android:orientation="vertical">


    <com.google.android.material.tabs.TabLayout
            android:id="@+id/eventsTabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabBackground="@drawable/tab_color_selector"
            app:tabGravity="fill"
            app:tabPaddingTop="76dp"
            app:tabTextColor="@android:color/background_light" />

<!--        app:tabIndicatorColor="@color/whiteText"-->
<!--        app:tabIndicatorHeight="3dp"-->

<!--        <com.google.android.material.tabs.TabItem-->
<!--                android:layout_width="wrap_content"-->
<!--                android:layout_height="wrap_content"-->
<!--                android:text="ONGOING" />-->



    <androidx.viewpager.widget.ViewPager
            android:id="@+id/eventsViewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
</LinearLayout>
class EventsFragment:Fragment(),ViewPager.OnPageChangeListener{
私有变量eventDayStatusTabAdapter:eventDayStatusTabAdapter?=null
受保护的lateinit变量mActivity:AppCompatActivity
伴星{
fun newInstance():events片段=
事件片段()
}
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
val视图=充气机。充气(R.layout.fragment_事件,容器,错误)
mActivity=作为AppCompativity的活动
返回视图
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
doInitialSetup()
}
私人娱乐活动初始设置(){
setUpLoanStatusTabAdapter()
}
私人娱乐设置LoanStatusTabAdapter(){
val subTab=arguments?.getString(“子节外”)
val activeTabPosition=when(子选项卡){
“进行中”->0
“第1天”->1天
“第2天”->2天
“日”->3
其他->0
}
eventDayStatusTabAdapter=eventDayStatusTabAdapter(
子碎片管理器,activeTabPosition
)
eventsviewpage.adapter=eventDayStatusTabAdapter
//这是viewpager工作所必需的,启用它将删除您在xml中声明的名称
eventsTabLayout.setupWithViewPager(eventsViewPager)
//eventsTabLayout.removeAllTabs()
//eventDayStatusTabAdapter?让{
//for(在0中输入i,直到它计数){
//val tab=eventsTabLayout.newTab()
//瓦尔标签名=
//mActivity.layoutInflater.flate(R.layout.events_选项卡,eventsTabLayout,false)显示为文本视图
//tabName.text=resources.getStringArray(R.array.eventsDayName)[i]
//tab.customView=tabName
//addTab(选项卡,i,0==i)
//tabName.isSelected=4==i
//如果(0==i){
//tab.select()
//                }
//            }
//        }
EventsViewPage.addOnPageChangeListener(此)
eventsTabLayout.getTabAt(activeTabPosition)?.select()
}
覆盖页面滚动状态更改(状态:Int){
//无所事事
}
覆盖已滚动的页面(位置:Int,位置偏移:Float,位置偏移像素:Int){
//无所事事
}
覆盖所选页面(位置:Int){
//无所事事
}
}
类EventDayStatusTabAdapter(efm:FragmentManager?,私有变量activePosition:Int?):
碎片页雷达(efm){
private val TAG=javaClass.name
私有变量持续:持续?=null
私有变量day1:day1?=null
私有变量day2:day2?=null
私有变量day3:day3?=null
专用val选项卡\ U计数=4
private val tabTitles=arrayOf(“正在进行”、“第1天”、“第2天”、“第3天”)
覆盖趣味getItem(位置:Int):片段{
何时(职位){
0 -> {
返回continuous.newInstance()
}
1 -> {
返回Day1.newInstance()
}
2 -> {
返回Day2.newInstance()
}
3 -> {
返回Day3.newInstance()
}
其他->{
返回continuous.newInstance()
}
}
}
覆盖元素(容器:视图组,位置:Int):任意{
val fragment=super.instanceItem(容器,位置)
何时(职位){
0 -> {
如果(片段正在进行){
进行中
}
}
1 -> {
如果(片段为第1天){
第1天=第1天()
}
}
2 -> {
如果(片段为第2天){
第2天=第2天()
}
}
3 -> {
如果(片段为第3天){
第3天=第3天()
}
}
其他->{
如果(片段正在进行){
进行中
}
}
}
返回片段
}
重写fun getCount():Int{
返回制表符计数
}
覆盖有趣的getPageTitle(位置:Int):字符序列{
返回标题[位置]
}
}

选项卡可见吗?@rupesh yes tab可见,并且该矩形还突出显示选项卡app:tabSelectedTextColor=“@color/colorPrimary”将此添加到内部表格布局标记否仍然是相同的可以添加此文件以及@drawable/tab\u color\u选择器。