仿淘宝宝贝详情页面三个Tablayout小demo:
activity_main布局:
<?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代码:
package com.example.lijunlu.taobao;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.Toast;
import java.lang.reflect.Field;
import java.util.ArrayList;
public class MainActivityextends AppCompatActivityimplements AbsListView.OnScrollListener {
private TabLayouttb;
private ListViewlv;
private ArrayListlist;
private int position;
private CustomAdapteradapter1;
@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;
}
}
}
适配器:
package com.example.lijunlu.taobao;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class CustomAdapterextends BaseAdapter {
private ArrayListlist =new ArrayList<>();
private Contextcontext;
public CustomAdapter(ArrayList 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 ViewrootView;
public TextViewtv;
public ViewHolder(View rootView) {
this.rootView = rootView;
this.tv = (TextView) rootView.findViewById(R.id.tv);
}
}
}
网友评论