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