HorizontalScrollView+RadioGroup+ViewPager+FragmentPagerAdapter基本结构

来源:互联网 发布:大数据自动阅卷系统 编辑:程序博客网 时间:2024/04/25 01:01
快速迭代用



import java.util.ArrayList;import org.json.JSONObject;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.HorizontalScrollView;import android.widget.RadioButton;import android.widget.RadioGroup;import com.android.volley.Response.Listener;import com.yirui.youbao.App;import com.yirui.youbao.fragment.OrderListFragment;import com.yirui.youbao.model.KeyValue;import com.yirui.youbao.net.Commands;/** * 订单管理 * @author pythoner *  */public class OrdersActivity extends BaseActivity implements View.OnClickListener {private Context context;private HorizontalScrollView hScrollView;private RadioGroup radioGroup;private ArrayList<KeyValue> tabs = new ArrayList<KeyValue>();private ViewPager viewPager;private FragmentPagerAdapter pagerAdapter;private Fragment[] fragments;private int curPosition=0;private KeyValue curKeyValue=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_orders);context = this;initActionBar("", App.res.getDrawable(R.drawable.back), "订单管理", "创建订单",null);initViews();}@Overridepublic void doRightButtonClick(View v) {Commands.doCommandOrderCreate(context, App.user,null,new Listener<JSONObject>() {@Overridepublic void onResponse(JSONObject response){// TODO Auto-generated method stub//Log.i("tag", response.toString());if (isSuccess(response)) {showToast("创建订单成功");}}});}private void initViews() {//1:未确认;2:待支付;3:已支付;4:已使用;5;用户退订;6:停车场退订;7:退款中;8;已退款tabs.add(new KeyValue("1","待确认"));tabs.add(new KeyValue("2","待支付"));tabs.add(new KeyValue("3","已支付"));tabs.add(new KeyValue("4","已使用"));tabs.add(new KeyValue("5","用户退订"));tabs.add(new KeyValue("6","停车场退订"));tabs.add(new KeyValue("7","退款中"));tabs.add(new KeyValue("8","已退款"));initIndicator();initViewPager();}private void initIndicator(){hScrollView = (HorizontalScrollView) findViewById(R.id.hScrollView);radioGroup = (RadioGroup) findViewById(R.id.radioGroup);for (int i = 0; i < tabs.size(); i++){            KeyValue tag = tabs.get(i);            RadioButton child = (RadioButton) LayoutInflater.from(context).inflate(R.layout.rb_for_orders, null);            child.setId(i);            child.setTag(tag);            child.setText(tag.getSecond());            child.setBackgroundResource(R.drawable.bg_radio_forum);            child.setOnClickListener(new OnClickListener(){                @Override                public void onClick(View v){                    // TODO Auto-generated method stub                    int id = v.getId();                    viewPager.setCurrentItem(id);                    curPosition=id;                    curKeyValue = (KeyValue) v.getTag();                }            });            if(i==curPosition){            child.setChecked(true);            }            radioGroup.addView(child);        }}private void initViewPager(){fragments = new Fragment[tabs.size()];for(int i=0;i<tabs.size();i++){fragments[i] = OrderListFragment.newInstance(tabs.get(i));}pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic int getCount() {return fragments.length;}@Overridepublic Fragment getItem(int position) {return fragments[position];}};viewPager = (ViewPager) findViewById(R.id.viewPager);viewPager.setOffscreenPageLimit(8);viewPager.setAdapter(pagerAdapter);viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener(){            @Override            public void onPageSelected(int position){                // TODO Auto-generated method stub                radioGroup.check(position);                smoothScrollTo(position);                curPosition=position;                curKeyValue = tabs.get(position);            }            @Override            public void onPageScrolled(int arg0, float arg1, int arg2){                // TODO Auto-generated method stub            }            @Override            public void onPageScrollStateChanged(int arg0){                // TODO Auto-generated method stub            }        });viewPager.setCurrentItem(curPosition);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stub}private void smoothScrollTo(final int position){        final int w = radioGroup.getWidth() / radioGroup.getChildCount();        new Handler().postDelayed((new Runnable(){            @Override            public void run(){                hScrollView.smoothScrollTo(((RadioButton) radioGroup.getChildAt(position)).getLeft() - w, 0);            }        }), 5);    }}


布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/bg_gray"    android:orientation="vertical" >    <include layout="@layout/actionbar_comm" />    <HorizontalScrollView        android:id="@+id/hScrollView"        android:layout_width="match_parent"        android:layout_height="48dp"        android:background="@android:color/white"        android:cacheColorHint="@android:color/transparent"        android:fadingEdge="none"        android:fadingEdgeLength="0dp"        android:gravity="center_vertical"        android:overScrollMode="never"        android:scrollbars="none" >        <RadioGroup            android:id="@+id/radioGroup"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:gravity="center_vertical"            android:orientation="horizontal" >        </RadioGroup>    </HorizontalScrollView>    <android.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_marginTop="16dp"        android:background="@android:color/white"        android:flipInterval="30"        android:persistentDrawingCache="animation" /></LinearLayout>


RadioButton --->rb_for_orders.xml
<?xml version="1.0" encoding="utf-8"?><RadioButton xmlns:android="http://schemas.android.com/apk/res/android"    style="@style/radio"    android:layout_height="match_parent"    android:paddingTop="8dp"    android:paddingBottom="8dp"    android:paddingLeft="8dp"    android:paddingRight="8dp"    android:textColor="@color/radio_textcolor_with_blue"    />

RadioButton -->背景bg_radio_forum.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_checked="true" android:drawable="@drawable/line_bottom_with_blue_bold_for_forum" />    <item android:state_checked="false">        <shape><solid android:color="@android:color/transparent" /><stroke android:width="0dp" android:color="@android:color/transparent" /> <corners android:radius="0dp" /></shape>    </item></selector>


RadioButton -->下划线line_bottom_with_blue_bold_for_forum.xml
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">    <item android:right="-3dp" android:left="-3dp" android:top="-3dp">      <shape>            <stroke android:width="2dp" android:color="@color/primary" /><solid android:color="@android:color/transparent"/>      </shape>    </item></layer-list>


SmartTabLayout
http://www.jcodecraeer.com/a/opensource/2015/0331/2674.html


http://blog.csdn.net/lmj623565791/article/details/42160391

Android TabLayout 库:FlycoTabLayout
http://www.open-open.com/lib/view/open1447294190257.html
  • 大小: 5.7 KB
  • 查看图片附件
0 0
原创粉丝点击