我有一个PagerSlidingTabStrip
,只有在PagerSlidingTabStrip中点击第一个标签页时才需要做一些特别的事情。即使第一个选项卡可见,也必须运行此代码。
我不需要pageChangeListener
因为只有在页面被更改时才会触发。我想在PagerSlidingTabStrip
的第一个标签页视图中点击监听器。
答案 0 :(得分:0)
您必须实施下面的页面更改列表
String output = "";
for(String each:parts){
output=output+each;
}
答案 1 :(得分:0)
为此你需要编辑lib。
PagerSlidingTabStrip.java
中的您需要为点击列表器添加一些额外的代码,例如
private OnTabClickListener onTabClickListener = null;
//interface with ontabclick method
public interface OnTabClickListener {
public void onTabClick(View v,int position);
}
//init interface using setOnTabClickListener method.
public void setOnTabClickListener(OnTabClickListener onTabClickListener){
this.onTabClickListener = onTabClickListener;
}
在放入此代码后,您需要修改addTab
文件的PagerSlidingTabStrip.java
方法,例如
private void addTab(final int position, View tab) {
tab.setFocusable(true);
tab.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//editation
if(onTabClickListener != null) {
onTabClickListener.onTabClick(v,position);
}
/////////////////////////////////////////
pager.setCurrentItem(position);
}
});
tab.setPadding(tabPadding, 0, tabPadding, 0);
tabsContainer.addView(tab, position, shouldExpand ? expandedTabLayoutParams : defaultTabLayoutParams);
}
现在在您的主要代码中。
tabs.setOnTabClickListener(new PagerSlidingTabStrip.OnTabClickListener() {
@Override
public void onTabClick(View v,int position) {
// do stuf here
}
});
答案 2 :(得分:0)
我尝试使用反射来获取私有方法。 我的代码:
try {
Field tabsContainerField = PagerSlidingTabStrip.class.
getDeclaredField("tabsContainer");
tabsContainerField.setAccessible(true);
LinearLayout tabContainer = (LinearLayout) tabsContainerField.get(mSlidingTabLayout);
View child = tabContainer.getChildAt(0);
//now i can do anything with view.
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
我知道这不是很好的方法之一。如果有人知道那么请分享。