Android(安卓)popupWindow 用法
16lz
2021-01-25
[功能]
PopupWindow作为一种用户提醒 而且其开销也比Activity要小
[代码 步骤]
1. 定义布局 供PopupWindow使用 如:hello.xml
Java代码- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:padding="10dp"
- >
- <ImageView
- android:id="@+id/image"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/robot"/>
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingLeft="20dip"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="HelloPop!"
- />
- <Button
- android:id="@+id/helloButton"
- android:layout_width="100dip"
- android:layout_height="wrap_content"
- android:text="OK"
- />
- </LinearLayout>
- </LinearLayout>
2. 通过LayoutInflater 得到hello.xml 的 View view
Java代码- view=this.getLayoutInflater().inflate(R.layout.hello,null);
3. 创建PopupWindow pop 使用上面布局文件view
Java代码- pop=newPopupWindow(view,500,200);
4. 弹出PopupWindow
* 定义布局文件:main.xml 包括一个Button
Java代码- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:id="@+id/main"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="popdemo!"
- />
- <Button
- android:id="@+id/button"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="topop!"
- />
- </LinearLayout>
* 弹出:有2种方式:一个是下拉方式 一个是指定位置
- 下拉:
Java代码- findViewById(R.id.button).setOnClickListener(newView.OnClickListener(){
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- pop.showAsDropDown(v);
- }
- });
- 指定位置:
Java代码- findViewById(R.id.button).setOnClickListener(newView.OnClickListener(){
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- pop.showAtLocation(findViewById(R.id.main),Gravity.CENTER,20,20);
- }
- });
5. 取消
Java代码- view.findViewById(R.id.helloButton).setOnClickListener(newView.OnClickListener(){
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- pop.dismiss();
- }
- });
6. 其他问题:
* 发现很多人对PopupWindow 里面包含ListView后 对具体哪个item被点击的获取有疑问 所以就顺便测试一下 发现和普通用法一样啊 没什么特别之处啊 现在把用法和大家分享分享
写道 因为ListView是展开显示的 会导致不美观 所以以Spinner为例6.1. 定义包含Spinner 的布局文件 hello.xml
Java代码- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- >
- <ImageView
- android:id="@+id/image"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/robot"/>
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="HelloPop!"
- />
- </LinearLayout>
- <Spinner
- android:id="@+id/spinner"
- android:layout_width="wrap_content"
- android:layout_height="40dip"/>
- </LinearLayout>
6.2. 得到Spinner的实例:spinner
Java代码- spinner=(Spinner)view.findViewById(R.id.spinner);
6.3. 绑定Spinner与具体数据 本例以联系人为例
Java代码- publicvoidspecifySpinner(){
- Cursorc=getContentResolver().query(People.CONTENT_URI,
- null,null,null,null);
- SimpleCursorAdapteradapter=newSimpleCursorAdapter(this,
- android.R.layout.simple_list_item_1,c,
- newString[]{People.NAME},
- newint[]{android.R.id.text1});
- adapter.setDropDownViewResource(
- android.R.layout.simple_spinner_dropdown_item);
- spinner.setAdapter(adapter);
- }
<uses-permission android:name=" android.permission.READ_CONTACTS" />
6.4. 具体item的获取:
Java代码- spinner.setOnItemSelectedListener(newOnItemSelectedListener(){
- publicvoidonItemSelected(AdapterView<?>adapter,Viewv,
- intpos,longid){
- updateTitle(pos);
- }
- publicvoidonNothingSelected(AdapterView<?>arg0){
- //TODOAuto-generatedmethodstub
- }
- });
public void updateTitle(int i){
this.setTitle("HelloPop:"+i);
}
6.5. emulator 运行截图:
原文:http://www.javaeye.com/topic/604462
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- android标题栏中添加返回按钮
- ubuntu下android源代码以及内核的获取
- 转载:Android(安卓)常用代码集合
- Android(安卓)Toast提示封装实例代码
- 方法一、使用Handler和Thread(线程)实现定时器
- 坑爹的minSdkVersion配置
- Android(安卓)四种绑定监听事件的方式
- Android:UI控件AutoCompleteTextView、MultiAutoCompleteTextView