【问题标题】:Android how can i replace the deprecated tabhost?Android 如何替换已弃用的 tabhost?
【发布时间】:2012-04-24 11:52:45
【问题描述】:

我将创建一个旨在使用Tabhost 的应用程序,但据我所知,它已被弃用。所以我的问题是我应该使用Tabhost 还是如何替换它..通过使用按钮而不是在每个 xml 或任何其他建议中声明的按钮?

【问题讨论】:

  • 已弃用,即使您可以使用它。不是吗?
  • 我知道,但我很好奇有没有比 tabhost 更好的解决方案
  • TabHost被弃用,它的TabActivityFragmentTabHost 方面已被弃用

标签: android android-tabhost


【解决方案1】:

“已弃用”在 Android 中的意思是“我们认为您应该研究更好的解决方案”。 “已弃用”很少意味着“它无法使用”。 TabHost,AFAIK,在 Android 4.0 上运行良好。

话虽如此,我还是建议您考虑切换到操作栏中的选项卡,使用ActionBarSherlock 来向后兼容 Android 2.1。

更新

此外,TabHost 未被弃用。 TabActivity 已弃用。您仍然可以使用TabHost,并为您的选项卡添加视图。或者,使用:

  • ViewPager 带有标签式指示器,例如 PagerTabStrip
  • FragmentTabHost,对于使用标签片段的TabHost

操作栏也支持选项卡,但从“L”开发者预览版开始已弃用。

【讨论】:

  • 感谢您的回答!我想我会在我的应用程序中使用ActionBarSherlock :)
  • TabHost 真的被弃用了吗?我认为 TabActivity 已被弃用。整个选项卡机制绝对令人困惑。如果 ActionBar 可以支持一种一致的机制,包括左/右滑动,那就太好了。有人知道以应有的方式实现它的建议样本吗?我已经阅读了 ActionBarSherlock 库提供的示例,这些示例在所有地方都使用了上面提到的 TabHost...
  • @and-dev:你说得对,TabHost 本身并没有被弃用——我没有对我的回答给予足够的关注,而是遵循了问题中使用的措辞。 TabActivity 已正式弃用,主要是因为 ActivityGroup 已弃用,支持碎片。但是,操作栏中的选项卡仍然是使用 TabHost 的替代方法。很抱歉给您带来了困惑。
  • @and-dev:使用ViewPager 表示滑动行为的主体。在选项卡方面,使用操作栏(参见ViewPagerJavaDocs),或使用“滑动选项卡”的第三方实现,如viewpagerindicator.comgithub.com/astuetz/android-viewpagertabs
  • @and-dev:Activity-in-tabs 是特别不推荐使用的 (ActivityGroup)。
【解决方案2】:

根据Android API level-18,不推荐使用ActionBarSherlock,他们已经引入了ActionBarCompat .. 最好使用ActionBarCompat

谢谢。

【讨论】:

    【解决方案3】:

    TabHost 在 API 级别 30 中已弃用。您可以使用材料 TabLayoutViewPager 代替 TabHost

    <com.google.android.material.tabs.TabLayout
                android:id="@+id/tablayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabGravity="center"
                app:tabIndicatorColor="@color/colorPrimary"
                app:tabIndicatorHeight="2dp"
                app:tabMode="fixed"
                app:tabSelectedTextColor="@color/colorPrimary"
                app:tabTextAppearance="@style/MapTabTextStyle"
                app:tabTextColor="@color/black" />
    

    代码:

    tablayout.addTab(tablayout.newTab().setText("Tab1"))
    tablayout.addTab(tablayout.newTab().setText("Tab2"))
    tablayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
            override fun onTabReselected(tab: TabLayout.Tab?) {
    
            }
    
            override fun onTabUnselected(tab: TabLayout.Tab?) {
                
            }
    
            override fun onTabSelected(tab: TabLayout.Tab?) {
                // do something
            }
    
        })
    

    【讨论】:

      猜你喜欢
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2020-02-27
      • 2018-07-05
      • 1970-01-01
      • 2014-01-10
      相关资源
      最近更新 更多