本文实例为大家分享了AndroID仿美团下拉菜单的实现代码,分类进行选择,供大家参考,具体内容如下
效果图
*** 作平台
AS2.0
第三方框架:butterknife
build.gradle
dependencIEs {compile filetree(dir: 'libs',include: ['*.jar'])testCompile 'junit:junit:4.12'compile 'com.androID.support:appcompat-v7:23.4.0'compile 'com.jakewharton:butterknife:7.0.1'}
实现代码
1、实现逻辑:主要利用Spinner与BaseAdapter来实现菜单下拉。具体美观效果要靠各个控件的调整,以及必要的分割线添加。
2、核心代码
适配器的item代码:item_main.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <TextVIEw androID:ID="@+ID/item_main_tv" androID:layout_wIDth="match_parent" androID:layout_height="40dp" androID:layout_marginleft="16dp" androID:background="#fff" androID:gravity="center_vertical" androID:singleline="true" androID:text="测试文字" androID:textSize="15dp" /> <!--分割线--> <TextVIEw androID:ID="@+ID/main_tv_line" androID:layout_wIDth="match_parent" androID:layout_height="1dp" androID:layout_marginleft="16dp" androID:layout_marginRight="16dp" androID:background="#edecec"/></linearLayout>
主页面布局文件activity_main.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="40dp" > <Spinner androID:ID="@+ID/main_sp1" > </Spinner> <!--这个是spinner之间的分割线--> <ImageVIEw /> <Spinner androID:ID="@+ID/main_sp2" ></Spinner> <ImageVIEw /> <Spinner androID:ID="@+ID/main_sp3" ></Spinner> </linearLayout> <!--设置一条分割线--> <TextVIEw androID:layout_wIDth="match_parent" androID:layout_height="1dp" androID:background="#dcdcdc" /> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="#ffffff"> <TextVIEw androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:gravity="center" androID:text="我是分类下面的正文内容"/> </linearLayout></linearLayout>
style文件
<!--spinner的样式--> <style name="style_spinner"> <item name="androID:layout_wIDth">0dp</item> <item name="androID:layout_height">40dp</item> <item name="androID:layout_weight">1</item> <item name="androID:dropDownVerticalOffset">40dp</item> <item name="androID:dropDownWIDth">1000dp</item> </style> <!--定义spinner之间的线的样式--> <style name="style_mian_verline"> <item name="androID:layout_wIDth">1dp</item> <item name="androID:layout_height">25dp</item> <item name="androID:background">#dcdcdc</item> <item name="androID:layout_gravity">center_vertical</item> </style>
MainActivity与适配器写在了一起,便于 *** 作
public class MainActivity extends AppCompatActivity { @Bind(R.ID.main_sp1) Spinner mMainSp1; @Bind(R.ID.main_sp2) Spinner mMainSp2; @Bind(R.ID.main_sp3) Spinner mMainSp3; private List<String> data_List1; private List<String> data_List2; private List<String> data_List3; private BaseAdapter arr_adapter;//适配器 @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); ButterKnife.bind(this); initData(); initAdapter(); setListener(); } //设置监听事件,将来商家列表的排序都在这里面处理 private voID setListener() { mMainSp1.setonItemSelectedListener(new AdapterVIEw.OnItemSelectedListener() { @OverrIDe public voID onItemSelected(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) { Toast.makeText(MainActivity.this,"点击了"+data_List1.get(position),Toast.LENGTH_SHORT).show(); } @OverrIDe public voID onnothingSelected(AdapterVIEw<?> parent) { } }); mMainSp2.setonItemSelectedListener(new AdapterVIEw.OnItemSelectedListener() { @OverrIDe public voID onItemSelected(AdapterVIEw<?> parent,"点击了"+data_List2.get(position),Toast.LENGTH_SHORT).show(); } @OverrIDe public voID onnothingSelected(AdapterVIEw<?> parent) { } }); mMainSp3.setonItemSelectedListener(new AdapterVIEw.OnItemSelectedListener() { @OverrIDe public voID onItemSelected(AdapterVIEw<?> parent,"点击了"+data_List3.get(position),Toast.LENGTH_SHORT).show(); } @OverrIDe public voID onnothingSelected(AdapterVIEw<?> parent) { } }); } private voID initAdapter() { //适配器 arr_adapter = new MyAdapter(data_List1); mMainSp1.setAdapter(arr_adapter); //适配器 arr_adapter = new MyAdapter(data_List2); mMainSp2.setAdapter(arr_adapter); //适配器 arr_adapter = new MyAdapter(data_List3); mMainSp3.setAdapter(arr_adapter); } //设置数据来源,这个要在网络获取。由于数据不会太多,不再考虑性能优化问题 private voID initData() { //数据 data_List1 = new ArrayList<>(); data_List1.add("全部分类"); data_List1.add("零食"); data_List1.add("水果"); data_List1.add("洗衣"); data_List1.add("洗车"); data_List1.add("茶饮"); //数据 data_List2 = new ArrayList<>(); data_List2.add("商圈"); data_List2.add("郑州航院"); data_List2.add("华北水利水电大学"); data_List2.add("河南中医大学"); data_List2.add("河南财经大学"); //数据 data_List3 = new ArrayList<>(); data_List3.add("智能排序"); data_List3.add("好评优先"); data_List3.add("离我最近"); data_List3.add("价格最低"); } //适配器 class MyAdapter extends BaseAdapter { private LayoutInflater mLayoutInflater; private List<String> mDataList; MyAdapter(List<String> dataList) { this.mDataList = dataList; mLayoutInflater = LayoutInflater.from(MainActivity.this); } @OverrIDe public int getCount() { return mDataList.size(); } @OverrIDe public Object getItem(int position) { return mDataList.get(position); } @OverrIDe public long getItemID(int position) { return position; } //数据不太多,没有使用VIEwHolder进行处理。 @OverrIDe public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { convertVIEw = VIEw.inflate(MainActivity.this,R.layout.item_main,null); TextVIEw textVIEw = (TextVIEw) convertVIEw.findVIEwByID(R.ID.item_main_tv); textVIEw.setText(mDataList.get(position)); return convertVIEw; } }}
以上就是本文的全部内容,希望对大家学习AndroID软件编程有所帮助。
总结以上是内存溢出为你收集整理的Android仿美团分类下拉菜单实例代码全部内容,希望文章能够帮你解决Android仿美团分类下拉菜单实例代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)