700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android 点击按钮弹出下拉菜单 Android下拉框PopupWindow使用详解

android 点击按钮弹出下拉菜单 Android下拉框PopupWindow使用详解

时间:2019-04-08 06:37:05

相关推荐

android 点击按钮弹出下拉菜单 Android下拉框PopupWindow使用详解

本文实例为大家分享了Android下拉框PopupWindow展示的具体代码,供大家参考,具体内容如下

activity_main.xml布局

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.example.spin.MainActivity" >

android:id="@+id/et_editText"

android:layout_width="250dp"

android:layout_height="50dp"

android:layout_centerHorizontal="true"

android:layout_marginTop="10dp"

android:text="@string/hello_world" />

android:id="@+id/down"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/down_arrow"

android:layout_alignRight="@id/et_editText"

android:layout_marginTop="20dp"

android:clickable="true"/>

List_item.xml布局

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_vertical"

android:orientation="horizontal" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/user"/>

android:id="@+id/tv_list_item"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:gravity="center_horizontal"

android:text="100000000"/>

android:id="@+id/delete"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/delete"/>

代码实现

public class MainActivity extends ActionBarActivity {

private EditText et_editText;//编辑框

private ImageView down;//下拉按钮

private ListView listView;

private List numList;

private PopupWindow popWin;

private Boolean isDown=false;//判断弹窗是否显示

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et_editText = (EditText) findViewById(R.id.et_editText);

down = (ImageView) findViewById(R.id.down);

//创建集合 储存号码

numList = new ArrayList();

for(int i=0;i<20;i++){

numList.add("100000000"+i);

}

initListView();

//对下拉按钮设置监听 当进行点击时 弹出popWin

down.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if(!isDown){

//定义一个popupWindow

popWin=new PopupWindow(MainActivity.this);

popWin.setWidth(et_editText.getWidth());//设置宽度 和编辑框的宽度相同

popWin.setHeight(200); //设置高度

//为popWin填充内容

popWin.setContentView(listView);

//点击popWin区域之外 自动关闭popWin

popWin.setOutsideTouchable(true);

/**

* 设置弹出窗口显示的位置

* 参数一:相对于参数的位置进行显示 即在编辑框的下面显示

* 参数二 三:x y轴的偏移量

*/

popWin.showAsDropDown(et_editText, 0, 0);

isDown=true;

}else{

popWin.dismiss();

isDown=false;

}

}

});

}

//点击返回按钮

@Override

public void onBackPressed() {

/**

* 当用户点击返回按钮时 是整个activity退出 而且给人的感觉是直接退出 窗口可能还是显示状态,

为了避免内存泄露,先关闭弹窗

*

* 当点击返回按钮时 如果窗口存在且正在显示 则关闭窗口

*/

if(popWin!=null&&popWin.isShowing()){

popWin.dismiss();

}

super.onBackPressed();

}

private void initListView() {

listView = new ListView(this);

//设置listView的背景

listView.setBackgroundResource(R.drawable.listview_background);

//设置条目之间的分割线及滚动条不可见

listView.setDivider(null);

listView.setVerticalScrollBarEnabled(false);

//设置适配器

listView.setAdapter(new MyListAdapter());

}

private class MyListAdapter extends BaseAdapter{

@Override

public int getCount() {

return numList==null?0:numList.size();

}

@Override

public View getView(final int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if(convertView==null){

convertView=View.inflate(getApplicationContext(), R.layout.list_item, null);

holder=new ViewHolder();

holder.tvNum=(TextView) convertView.findViewById(R.id.tv_list_item);

holder.delete=(ImageView) convertView.findViewById(R.id.delete);

convertView.setTag(holder);

}else{

holder=(ViewHolder) convertView.getTag();

}

holder.tvNum.setText(numList.get(position));

//对删除按钮设置监听事件

holder.delete.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

//当点击删除按钮时 删除条目

numList.remove(position);

//刷新ListView

MyListAdapter.this.notifyDataSetChanged();

}

});

//对条目设置监听事件 点击条目后 将num设置到编辑框中

convertView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

//点击条目后 将num设置到编辑框中

et_editText.setText(numList.get(position));

popWin.dismiss();

}

});

return convertView;

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return 0;

}

}

private class ViewHolder {

TextView tvNum;

ImageView delete;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。