简单的下拉菜单实现

来源:互联网 发布:淘宝客退货还有佣金吗 编辑:程序博客网 时间:2024/05/01 14:42

没什么好说的,都是系统组件组成,效果:



直接上代码:


activity:

package com.example.spinnerdemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.TextView;public class MainActivity extends Activity {private ImageView iv_down_arrow;private EditText et_content;private PopupWindow popupWindow;private List<String> msgList;private ListView listView;private MyAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 初始化组件initViews();// 初始化msgListinitMsgList();initListView4PopWindow();iv_down_arrow.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (popupWindow != null && popupWindow.isShowing()) {popupWindow.dismiss();popupWindow = null;} else {popupWindow = new PopupWindow(MainActivity.this);// 设置popupwindow的外部点击会关闭popupwindow// popupWindow.setOutsideTouchable(true);popupWindow.setContentView(listView);popupWindow.setWidth(et_content.getWidth());popupWindow.setHeight(200);popupWindow.showAsDropDown(et_content, 0, 0);}}});}/** * 初始化一个listview供popupwindow使用 */private void initListView4PopWindow() {listView = new ListView(this);listView.setBackgroundResource(R.drawable.listview_background);// 取消listview的分割线listView.setDivider(null);// 关闭listview的数值滑动条listView.setVerticalScrollBarEnabled(false);if (adapter == null) {adapter = new MyAdapter();listView.setAdapter(adapter);} else {adapter.notifyDataSetChanged();}}private class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {return msgList.size();}@Overridepublic Object getItem(int position) {return msgList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView,ViewGroup parent) {ViewHolder holder;if (convertView == null) {holder = new ViewHolder();convertView = View.inflate(MainActivity.this,R.layout.list_item, null);holder.iv_delete = (ImageView) convertView.findViewById(R.id.iv_delete);holder.tv_item = (TextView) convertView.findViewById(R.id.tv_item);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.tv_item.setText(msgList.get(position));holder.iv_delete.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {msgList.remove(position);// 在adapter内部调用notifyDataSetChanged的方法MyAdapter.this.notifyDataSetChanged();}});holder.tv_item.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {et_content.setText(msgList.get(position));if (popupWindow.isShowing()) {popupWindow.dismiss();}}});return convertView;}}private static class ViewHolder {private TextView tv_item;private ImageView iv_delete;}/** * 初始化msgList */private void initMsgList() {msgList = new ArrayList<String>();for (int i = 0; i < 50; i++) {msgList.add("1008611100" + i);}}/** * 初始化组件 */private void initViews() {iv_down_arrow = (ImageView) findViewById(R.id.iv_down_arrow);et_content = (EditText) findViewById(R.id.et_content);}}



布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="${relativePackage}.${activityClass}" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_margin="5dp"        android:orientation="horizontal" >        <EditText            android:id="@+id/et_content"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:layout_weight="1000"            android:hint="请输入内容"            android:singleLine="true" />        <ImageView            android:id="@+id/iv_down_arrow"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:background="@drawable/down_arrow" />    </LinearLayout></RelativeLayout>



0 0
原创粉丝点击