如何打造Android自定义的下拉列表框控件

 我来答
雨过天晴日丶
2016-03-08 · TA获得超过2636个赞
知道大有可为答主
回答量:1879
采纳率:91%
帮助的人:1666万
展开全部
实现方式:
1、水平布局一个TextView和一个ImageView(小黑箭头)
2、实现点击ImageView的单击事件,弹出PopupWindow
3、PopupWindow中实现下拉列表
关键代码示例:
1、布局

<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView/>
<ImageView />
</LinearLayout>
2、单击事件

image.setBackgroundResource(R.drawable.gerendang_jiantou);
image.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//弹出popupwindow
}
});
3、pupupwindow相关代码
ListView lv = new ListView(this);
adapter = new OptionsAdapter(context, datas); // 根据数据,设置下拉框显示
list.setAdapter(adapter);

/**
* 两种不同长度的下拉框,主要是为了适应屏幕的大小
*/
if (p_width > 0) {
pWindow = new PopupWindow(v, par.getWidth(), 150);
} else {
pWindow = new PopupWindow(v, par.getWidth(), 300);
}
pWindow.setFocusable(true); //能够焦点获得
pWindow.setBackgroundDrawable(new BitmapDrawable()); //设置背景
pWindow.setOutsideTouchable(true); //外部点击关闭
pWindow.update(); //更新位置
千锋教育
2016-03-16 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
使用popupwindow很好,比默认的要好看多了。

popupwindow显示提供了两种形式:
  showAtLocation()显示在指定位置,有两个方法重载:
public void showAtLocation(View parent, int gravity, int x, int y)

public void showAtLocation(IBinder token, int gravity, int x, int y)
  showAsDropDown()显示在一个参照物View的周围,有三个方法重载:
public void showAsDropDown(View anchor)

public void showAsDropDown(View anchor, int xoff, int yoff)

public void showAsDropDown(View anchor, int xoff, int yoff, int gravity)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-07-21
展开全部
1.下拉列表使用Spinner。2.布局:android:layout_width="fill_parent"android:layout_height="wrap_content"3.实现1)新增选择内容:String[]m={"A型","B型","O型","AB型","其他"};2)初始化设配器:privateArrayAdapteradapter=newArrayAdapter(this,android.R.layout.simple_spinner_item,m);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置下拉列表的风格spinner.setAdapter(adapter);//将adapter添加到spinner中spinner.setOnItemSelectedListener(newSpinnerSelectedListener());//添加事件Spinner事件监听3)新建Spinner监听器classSpinnerSelectedListenerimplementsOnItemSelectedListener{publicvoidonItemSelected(AdapterView?arg0,Viewarg1,intarg2,longarg3){view.setText("你选择的值:"+m[arg2]);//设置编辑框为获取到的选择值}publicvoidonNothingSelected(AdapterView?arg0){}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-07-26
展开全部
As long sections of bare
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式