android是否提供了自定义标准PageTitleStrip或PageTabStrip的机会? 我想创建这样的标题?我应该扩展什么样的观点,也许这个领域有一些最佳实践?
答案 0 :(得分:3)
只需创建自己的自定义视图,通过调用ViewPager.setOnPageChangeListener将其连接到您的视图寻呼机,瞧 - 您有自己的页面条。
您可以查看ViewPagerIndicator和PageTitleStrip本身的来源(Android源代码可免费获取),以了解如何详细实现此内容
答案 1 :(得分:1)
这可能有点晚了但我终于找到了解决我如何自定义titletrip问题的方法。我意识到这不是一种非常干净的自定义标题的方式,但我无法在任何地方找到更好的解决方案。我希望它能为你们节省一些时间。
首先创建一个扩展PagerTitleStrip的新类,并使用两个参数覆盖构造函数:
public class MyPagerTitleStrip extends PagerTitleStrip {
public MyPagerTitleStrip(Context context, AttributeSet attrs) {
super(context, attrs);
((ViewManager) (this.getChildAt(2)).getParent()).removeView((TextView)this.getChildAt(2));
((ViewManager) (this.getChildAt(0)).getParent()).removeView((TextView)this.getChildAt(0));
}
}
正如你所看到的,我以一种hacky的方式从titlestrip中删除了两个textview,所以对此感到厌倦。这两个文本视图分别显示上一个和下一个项目的标题。
您可能想要做一些与我不同的事情,因此在更改/破解任何内容之前,请仔细查看android PagerTitleStrip类,尤其是构造函数。构造函数可能是您要添加drawables等的地方。
在protected void onLayout()
方法中更改视图可能会导致视图被绘制两次,这对应用程序的性能不是很好(您在日志中会看到很多警告)。
在xml中,一切都是一样的:
<android.support.v4.view.ViewPager
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/main_fragment_pager"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.package.MyPagerTitleStrip
android:id="@+id/fragment_pager_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:paddingTop="4dp"
android:paddingBottom="4dp"
android:background="#111111"
style="@style/viewPagerTitleStrip">
</com.package.MyPagerTitleStrip>
</android.support.v4.view.ViewPager>