使用附加视图自定义android ViewPager--作为组件
我希望有一个自定义的ViewPager,并根据与ViewPager的交互,添加具有特定行为的其他视图 我已经实现了我想要的一切,将视图添加到包含ViewPager和所有其他视图的主布局中。然后将逻辑添加到现有的ViewPager,添加自定义侦听器等 它是有效的,但是。。。这很难看–负责管理viewpager行为的代码被“泄漏”到包含viewpager和其他视图的布局的活动中(没有封装),更严重的问题是–这是绝对不可重用的 因此,我想扩展ViewPager,并将所有额外的视图和逻辑添加到ViewPager本身,使其成为一个封装的、可重用的组件。ViewPager扩展了ViewGroup,所以我想我应该添加我想要的视图,并将其全部设置好——但一旦添加视图,它们就不会显示,我也不知道为什么 下面是我尝试的代码(忽略类的名称)使用附加视图自定义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
和其他视图包装在外部容器中(例如,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);
}