本文将带你了解Android应用开发Android顶部三个TabLayout,滑动到某条目之后就会切换到相应的TabLayout(代码实现),希望本文对大家学Android有所帮助。<
Android顶部三个TabLayout,滑动到某条目之后就会切换到相应的TabLayout(代码实现)
xml布局:
MainActivity中:
public class MainActivity extends AppCompatActivity implements AbsListView.OnScrollListener {
private TabLayout tb;
private ListView lv;
private ArrayList list;
private int position;
private CustomAdapter adapter1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<>();
for (int i = 0; i <200; i++) {
list.add("龙雀" + i);
}
initView();
}
private void initView() {
tb = (TabLayout) findViewById(R.id.tb);
lv = (ListView) findViewById(R.id.lv);
adapter1 = new CustomAdapter(list,this);
lv.setAdapter(adapter1);
lv.setOnScrollListener(this);
for (int i = 0; i
TabLayout.Tab tab = tb.getTabAt(i);
if (tab == null)
return;
Class c = tab.getClass();
try {
Field field = c.getDeclaredField("mView");
field.setAccessible(true);
final View view = (View) field.get(tab);
if (view == null)
return;
view.setTag(i);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
position = (int) view.getTag();
switch (position) {
case 0:
lv.setSelection(0);
break;
case 1:
lv.setSelection(50);
break;
case 2:
lv.setSelection(70);
break;
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
int post;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case 0:
switch (post) {
case 0:
TabLayout.Tab tab = tb.getTabAt(0);
tab.select();
break;
case 50:
TabLayout.Tab tab2 = tb.getTabAt(1);
tab2.select();
break;
case 70:
TabLayout.Tab tab3 = tb.getTabAt(2);
tab3.select();
break;
}
Toast.makeText(this, "我现在处于不滑动状态", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(this, "我现在处于滑动状态", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
switch (firstVisibleItem) {
case 0:
post = 0;
break;
case 50:
post = 50;
break;
case 70:
post = 70;
break;
case 49:
post = 0;
break;
case 69:
post = 50;
break;
}
}
}
适配器:
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!