先上效果图 凑合看:

xml布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.design.widget.TabLayout
android:id="@+id/tb"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="baby" />
<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="discuss" />
<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="detail" />
</android.support.design.widget.TabLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv"
/>
</LinearLayout>MainActivity中:
public class MainActivity extends AppCompatActivity implements AbsListView.OnScrollListener {
private TabLayout tb;
private ListView lv;
private ArrayList<String> list;
private int position;
private CustomAdapter adapter1;
int post;
@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 < tb.getTabCount(); 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();
}
}
}
@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;
}
}
}适配器:
public class CustomAdapter extends BaseAdapter {
private ArrayList<String> list = new ArrayList<>();
private Context context;
public CustomAdapter(ArrayList<String> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item, null);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.tv.setText(list.get(position));
return convertView;
}
public static class ViewHolder {
public View rootView;
public TextView tv;
public ViewHolder(View rootView) {
this.rootView = rootView;
this.tv = (TextView) rootView.findViewById(R.id.tv);
}
}
}版权声明:本文为qq_42164040原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。