Android 滑动TabLayout位置问题
Android SlidingTabLayout position issue
我在我的应用程序中使用 SlidingTabLayout。我在这个 class 中使用了自定义选项卡填充方法。并且还制作了自定义侦听器以获取选项卡的位置。但是当我点击选项卡时,它每次都会给我最后一个位置。我知道这是我的错误。因为我正在使用 for 循环来设置位置。但是我不知道如何解决这个问题。
我的代码在这里,
public void populateTabStrip(List<StoreType> st) {
mTabStrip.removeAllViews();
for (i = 0; i < st.size(); i++) {
pos = i;
View tabView = null;
TextView tabTitleView = null;
if (mTabViewLayoutId != 0) {
tabView = LayoutInflater.from(getContext()).inflate(
mTabViewLayoutId, mTabStrip, false);
tabTitleView = (TextView) tabView
.findViewById(mTabViewTextViewId);
}
if (tabView == null) {
tabView = createDefaultTabView(getContext());
}
if (tabTitleView == null && TextView.class.isInstance(tabView)) {
tabTitleView = (TextView) tabView;
}
if (mDistributeEvenly) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView
.getLayoutParams();
lp.width = 0;
lp.weight = 1;
}
tabTitleView.setText(st.get(i).getType());
tabView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CategoryListner.onSelect(pos);
}
});
String desc = mContentDescriptions.get(i, null);
if (desc != null) {
tabView.setContentDescription(desc);
}
mTabStrip.addView(tabView);
tabTitleView.setTextColor(getResources()
.getColorStateList(selector));
tabTitleView.setTextSize(14);
}
}
下面是Listerer,
public static interface categorySelctListenr {
public void onSelect(int i);
}
原始码是here
而且我也没有使用带有选项卡的 viewpager。我只是在下面的列表视图中使用选项卡。但实际问题是听众。因为我想要特定选项卡的位置。谢谢。
我不认为这是使用自定义视图实现 SlidingTabLayout 的正确方法。
但是对于您的解决方案,我会适合千斤顶。
tabView.setTag(Integet.toString(pos)); //**here i set Tag of positon**
tabView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int posClicked = Integet.parseInt(v.getTag().toString());// get tag that contain position
CategoryListner.onSelect(posClicked);
}
});
希望这对你有用。
我在我的应用程序中使用 SlidingTabLayout。我在这个 class 中使用了自定义选项卡填充方法。并且还制作了自定义侦听器以获取选项卡的位置。但是当我点击选项卡时,它每次都会给我最后一个位置。我知道这是我的错误。因为我正在使用 for 循环来设置位置。但是我不知道如何解决这个问题。
我的代码在这里,
public void populateTabStrip(List<StoreType> st) {
mTabStrip.removeAllViews();
for (i = 0; i < st.size(); i++) {
pos = i;
View tabView = null;
TextView tabTitleView = null;
if (mTabViewLayoutId != 0) {
tabView = LayoutInflater.from(getContext()).inflate(
mTabViewLayoutId, mTabStrip, false);
tabTitleView = (TextView) tabView
.findViewById(mTabViewTextViewId);
}
if (tabView == null) {
tabView = createDefaultTabView(getContext());
}
if (tabTitleView == null && TextView.class.isInstance(tabView)) {
tabTitleView = (TextView) tabView;
}
if (mDistributeEvenly) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView
.getLayoutParams();
lp.width = 0;
lp.weight = 1;
}
tabTitleView.setText(st.get(i).getType());
tabView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CategoryListner.onSelect(pos);
}
});
String desc = mContentDescriptions.get(i, null);
if (desc != null) {
tabView.setContentDescription(desc);
}
mTabStrip.addView(tabView);
tabTitleView.setTextColor(getResources()
.getColorStateList(selector));
tabTitleView.setTextSize(14);
}
}
下面是Listerer,
public static interface categorySelctListenr {
public void onSelect(int i);
}
原始码是here
而且我也没有使用带有选项卡的 viewpager。我只是在下面的列表视图中使用选项卡。但实际问题是听众。因为我想要特定选项卡的位置。谢谢。
我不认为这是使用自定义视图实现 SlidingTabLayout 的正确方法。 但是对于您的解决方案,我会适合千斤顶。
tabView.setTag(Integet.toString(pos)); //**here i set Tag of positon**
tabView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int posClicked = Integet.parseInt(v.getTag().toString());// get tag that contain position
CategoryListner.onSelect(posClicked);
}
});
希望这对你有用。