PopupWindow实现android自定义弹出框口

来源:互联网 发布:日程规划软件 编辑:程序博客网 时间:2024/06/01 09:18
android开发中我们要实现很多自定义的弹出窗口,我们可以使用PopupWindow来实现
public class SelectDialog extends Activity implements OnClickListener {private PopupWindow popupWindow2 = null;//  PopupWindow在android.widget包下,弹出窗口的形式展示。官方文档对该控件的描述是:“一个弹出窗口控件,可以用来显示任意视图(View),而且会浮动在当前 活动(activity)的顶部”。PopupWindow可以让我们实现多种自定义控件,例如:menu、alertdialog等弹窗似的View private LayoutInflater layoutInflater2;//为了获取res 下的layout的xml文件private View popView2;private ImageView gengDuo;//更多下拉条@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);      gengDuo = (ImageView) v.findViewById(R.id.geng_duo);     } public void showSelect(View anchor) {//anchor 想让该弹出框在那个组件下显示 就传哪个组件Rect frame = new Rect();getActivity().getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int i = 0;int j = 0;int[] location = { i, j };anchor.getLocationOnScreen(location);layoutInflater2 = LayoutInflater.from(this);popView2 = layoutInflater2.inflate(R.layout.layout_pop_type, null);popView2.setFocusableInTouchMode(true);popView2.setFocusable(true);LinearLayout layMScan = (LinearLayout) popView2.findViewById(R.id.lay_m_scan);LinearLayout layMLoc = (LinearLayout) popView2.findViewById(R.id.lay_m_loc);layMScan.setOnClickListener(this);layMLoc.setOnClickListener(this);popupWindow2 = new PopupWindow(popView2,android.view.ViewGroup.LayoutParams.WRAP_CONTENT/* * DipPxUtil.dip2px * (context, * 126) */,android.view.ViewGroup.LayoutParams.WRAP_CONTENT, true);ColorDrawable dw = new ColorDrawable(999999);popupWindow2.setBackgroundDrawable(dw); //如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框popupWindow2.setFocusable(true);popupWindow2.setOutsideTouchable(true);//点击弹出框外任意一区域弹出框消失popupWindow2.update();popupWindow2.showAsDropDown(anchor, anchor.getWidth(), 0);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.geng_duo:// 点击更多时显示下拉列表showSelect(v);//// 设置按钮的点击事件break; case R.id.lay_m_scan:// 扫描 break;case R.id.lay_m_loc:// 定位 break;default:break;}}}

layout_pop_type.xml 文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:layout_gravity="right"    android:orientation="vertical" >    <LinearLayout        android:layout_width="116dp"        android:layout_height="100dp"        android:layout_gravity="center|right"        android:gravity="left|center"        android:background="@drawable/buttom_function_bg"        android:orientation="vertical" >        <LinearLayout            android:id="@+id/lay_m_scan"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:gravity="center"            android:orientation="horizontal" >            <ImageView                android:id="@+id/type_m_scan"                android:layout_width="30dp"                android:layout_height="30dp"                android:layout_marginRight="8dp"                android:background="@drawable/m_scan" />            <TextView                android:id="@+id/type_mscan_tx"                android:layout_width="wrap_content"                android:layout_height="25dp"                android:layout_marginRight="10dp"                android:gravity="center"                android:text="扫描"                android:textColor="#999999"                android:textSize="16sp" />        </LinearLayout>             <LinearLayout            android:id="@+id/lay_m_loc"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:gravity="center"            android:orientation="horizontal"            android:paddingTop="10dp" >            <ImageView                android:id="@+id/type_m_loc"                android:layout_width="30dp"                android:layout_height="30dp"                android:layout_marginRight="8dp"                android:background="@drawable/m_loc" />            <TextView                android:id="@+id/type_mloc_tx"                android:layout_width="wrap_content"                android:layout_height="25dp"                android:layout_marginRight="10dp"                android:gravity="center"                android:text="定位"                android:textColor="#999999"                android:textSize="16sp" />        </LinearLayout>    </LinearLayout></LinearLayout>


0 0