使用附加视图自定义android ViewPager--作为组件

使用附加视图自定义android ViewPager--作为组件,android,android-viewpager,android-support-library,android-navigation,Android,Android Viewpager,Android Support Library,Android Navigation,我希望有一个自定义的ViewPager,并根据与ViewPager的交互,添加具有特定行为的其他视图 我已经实现了我想要的一切,将视图添加到包含ViewPager和所有其他视图的主布局中。然后将逻辑添加到现有的ViewPager,添加自定义侦听器等 它是有效的,但是。。。这很难看–负责管理viewpager行为的代码被“泄漏”到包含viewpager和其他视图的布局的活动中(没有封装),更严重的问题是–这是绝对不可重用的 因此,我想扩展ViewPager,并将所有额外的视图和逻辑添加到ViewP

我希望有一个自定义的ViewPager,并根据与ViewPager的交互,添加具有特定行为的其他视图

我已经实现了我想要的一切,将视图添加到包含ViewPager和所有其他视图的主布局中。然后将逻辑添加到现有的ViewPager,添加自定义侦听器等

它是有效的,但是。。。这很难看–负责管理viewpager行为的代码被“泄漏”到包含viewpager和其他视图的布局的活动中(没有封装),更严重的问题是–这是绝对不可重用的

因此,我想扩展ViewPager,并将所有额外的视图和逻辑添加到ViewPager本身,使其成为一个封装的、可重用的组件。ViewPager扩展了ViewGroup,所以我想我应该添加我想要的视图,并将其全部设置好——但一旦添加视图,它们就不会显示,我也不知道为什么

下面是我尝试的代码(忽略类的名称)


ViewPager
保存页面。它不包含任意的其他内容。您需要将
ViewPager
和其他视图包装在外部容器中(例如,
LinearLayout
)。这是我得出的结论,但感觉不太对劲(请记住,
ViewGroup
在很大程度上是一种抽象。虽然
ViewGroup
知道有子小部件,但它需要
ViewGroup
的子类来实现布局规则。
ViewPager
的布局规则绑定到
PagerAdapter
中,而不是任意的子小部件。
public class ClickableViewPager extends ViewPager {


/**
 * @param context
 */
public ClickableViewPager(Context context) {
    super(context);
    this.initViews(context);
}



/**
 * @param context
 * @param attrs
 */
public ClickableViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);

    this.initViews(context);

}


private void initViews(Context context) {
    ImageView iv = new ImageView(context);
    iv.setImageResource(R.drawable.logo);


    TextView tv = new TextView(context);
    tv.setText("BLAH");


    this.addView(tv);

    this.addView(iv);
}