PopupWindow的简单应用

这是一个点击删除按钮,弹出PopupWindow对话框操作的案例,昨天第一次用PopupWindow,拿出来分享下:
xml页面如下:
activity_main.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:orientation="horizontal" >

    <ImageView
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/btn_dialog"
       
        />

</LinearLayout>
window.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:background="#ffeeaa"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:alpha="0.6"
        android:background="#cccccc"
        android:text="删除" />

    <Button
        android:id="@+id/button2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="取消"
        android:background="#ffee99"
        android:alpha="0.3"/>

</LinearLayout>
唯一的Activity:MainActivity,不用手动注册什么
package com.example.popupwindow;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.Toast;
import android.os.Build;
import android.provider.Settings.System;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
        ImageView btn = (ImageView) findViewById(R.id.btn);
       
        btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 显示窗口
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
        // 引入窗口配置文件
        View view = inflater.inflate(R.layout.window, null);
        // 创建PopupWindow对象
        final PopupWindow pop = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);
        DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int width = metric.widthPixels;
        pop.setWidth(width);
        pop.setHeight(140);
        pop.setAnimationStyle(android.R.style.Animation_InputMethod);
        // 需要设置一下此参数,点击外边可消失
        pop.setBackgroundDrawable(new BitmapDrawable());
        //设置点击窗口外边窗口消失
        pop.setOutsideTouchable(true);
        // 设置此参数获得焦点,否则无法点击
        pop.setFocusable(true);
if(pop.isShowing()) {
// 隐藏窗口,如果设置了点击窗口外小时即不需要此方式隐藏
pop.dismiss();
} else {

pop.showAsDropDown(v);
}
//得到子页面,从而得到需要添加监听的控件
View w = pop.getContentView();
Button btnConfig = (Button) w.findViewById(R.id.button1);
btnConfig.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "删除", Toast.LENGTH_SHORT).show();
}
});
Button btn = (Button) w.findViewById(R.id.button2);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
pop.dismiss();
}
});
}
});
}
}

猜你喜欢

转载自1397452815.iteye.com/blog/2154602
今日推荐