PopupWindow嵌套ListView
![preview](https://csdnimg.cn/release/download/static_files/pc/images/thumbnail/RAR.png)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来创建弹出式窗口,通常用于实现下拉菜单、提示信息等效果。本示例着重讲解如何将`ListView`嵌套在`PopupWindow`中,并解决`ListView`宽度自适应的问题。同时,还会涉及到在Android Studio中创建9.png(九宫格图片)的过程。 `PopupWindow`的基本用法包括设置内容视图、宽度和高度、背景透明度以及是否允许触摸外部关闭。为了在`PopupWindow`中嵌套`ListView`,我们需要先创建一个布局文件,该布局文件包含一个`ListView`。`ListView`的宽度可以根据需要自定义,但为了实现自适应,我们可以让它填充父布局的宽度。 ```xml <!-- popup_list.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@null" /> </LinearLayout> ``` 接下来,我们需要创建一个适配器来填充`ListView`的数据。适配器可以是`ArrayAdapter`、`BaseAdapter`或其他自定义适配器,根据实际需求选择。这里假设我们使用`ArrayAdapter`: ```java // MyAdapter.java public class MyAdapter extends ArrayAdapter<String> { public MyAdapter(Context context, int resource, List<String> items) { super(context, resource, items); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false); } TextView textView = (TextView) convertView.findViewById(R.id.text_view); textView.setText(getItem(position)); return convertView; } } ``` 然后,在主活动中,我们创建`PopupWindow`并设置其内容为之前创建的`ListView`布局: ```java // MainActivity.java public class MainActivity extends AppCompatActivity { private PopupWindow popupWindow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = new ListView(this); listView.setAdapter(new MyAdapter(this, R.layout.list_item, Arrays.asList("Item 1", "Item 2", "Item 3"))); View contentView = getLayoutInflater().inflate(R.layout.popup_list, null); contentView.addView(listView); popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); popupWindow.showAtLocation(findViewById(R.id.container), Gravity.BOTTOM, 0, 0); } } ``` 关于9.png图片,这是一种特殊的图片格式,可以拉伸而不失真。在Android Studio中创建9.png图片,首先绘制图形,然后在图形的角落和边缘添加标记线,指示可拉伸和不可拉伸的部分。在`Drawable`资源目录中,右键选择`New > Vector Asset`,在打开的窗口中选择`Clip Art`或`Local File`导入图片,然后在编辑器中设置拉伸区域。 至此,我们已经实现了`PopupWindow`嵌套`ListView`的功能,同时也解决了`ListView`的宽度自适应问题,并介绍了如何在Android Studio中创建9.png图片。这个示例对于理解和应用`PopupWindow`与`ListView`的结合有着重要的参考价值。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/38b70e0bdade46d29633303647352f50_zheng_jiao.jpg!1)
- 粉丝: 910
- 资源: 72
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- gtk3-runtime-3.24.8-64bit
- imTwo 即时通讯 融云
- Linux环境一键执行脚本命令安装msyql,主打的就是便捷
- imOne 即使通讯 融云
- 基于 Bootstrap+Echarts +Java SpringBoot 实现数字化水资源监测全景驾驶舱项目
- 带http-image-filter-module的nginx(windows版)
- cherry pick操作git 将一个分支的多次提交merge到另一个分支(基于TortoiseGit客户端图文)
- Python 毕业设计基于 opencv、Dlib 的人脸识别门禁系统代码+使用教程
- 贷款平台源码/卡卡贷源码/小贷源码/完美版
- Scratch语言入门教程,简易、有趣、实用.pdf
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)