android 弹出窗口组件(PopupWindow)

 

 

既然PopupWindow组件可以在界面上显示一个自己的界面层,那就需要一个专门的布局文件。

  只要是组件就一定离不开布局文件。

  既然后面要出现的布局是通过PopupWindow文件配置的,那么所有组件必须使用一个转换类。

 

 

 

在main.xml中

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:gravity="center_horizontal">

  <TextView

     android:id="@+id/statusinfo"

     android:layout_marginTop="8dp"

     android:layout_width="fill_parent"

     android:layout_height="wrap_content"

     android:gravity="center_horizontal"

     android:text="请选择您喜欢的三国人物" />

  <Button

     android:id="@+id/popbut"

     android:layout_marginTop="8dp"

     android:layout_width="60dp"

     android:layout_height="wrap_content"

     android:text="选择" />

</LinearLayout>

 

 

 

 

新建布局文件popwindow.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

  xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:gravity="center_horizontal">

 

  <RadioGroup

     android:id="@+id/choose"

     android:layout_marginTop="100dp"

     android:layout_width="wrap_content"

     android:layout_height="wrap_content"

     android:orientation="vertical">

     <RadioButton

       android:id="@+id/simayi"

       android:text="司马懿" />

     <RadioButton

       android:id="@+id/zhugeliang"

       android:text="诸葛亮" />

     <RadioButton

       android:id="@+id/zhouyu"

       android:text="周瑜" />

     <RadioButton

         android:id="@+id/xuyou"

         android:text="许攸"/>

  </RadioGroup>

  <Button

     android:id="@+id/cancel"

     android:layout_width="60dp"

     android:layout_height="wrap_content"

     android:text="取消"/>

</LinearLayout>

 

 

 

 

在MyPopupWindowDemo.java程序中

package com.li.popupwindow;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.PopupWindow;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.RadioGroup.OnCheckedChangeListener;

import android.widget.TextView;

 

public class MyPopupWindowDemo extends Activity {

  private Button popbut = null;

  private TextView statusinfo = null;

  private View popView = null ;

  private PopupWindow popWin = null ;

  private RadioGroup changestatus = null ;

  private Button cancel = null ;

 

  @Override

  public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     super.setContentView(R.layout.main);

     this.popbut = (Button) super.findViewById(R.id.popbut);

     this.statusinfo = (TextView) super.findViewById(R.id.statusinfo);

    

     this.popbut.setOnClickListener(new OnClickListenerImpl()) ;

  }

 

  private class OnClickListenerImpl implements OnClickListener {

 

     public void onClick(View v) {

       LayoutInflater inflater = LayoutInflater.from(MyPopupWindowDemo.this) ;

       MyPopupWindowDemo.this.popView = inflater.inflate(

            R.layout.popwindow, null);  // 找到了布局文件中的View

       MyPopupWindowDemo.this.popWin = new PopupWindow(

            MyPopupWindowDemo.this.popView, 300,600, true);

       MyPopupWindowDemo.this.changestatus = (RadioGroup) MyPopupWindowDemo.this.popView

            .findViewById(R.id.choose); // 取得弹出界面中的组件

       MyPopupWindowDemo.this.cancel = (Button) MyPopupWindowDemo.this.popView

            .findViewById(R.id.cancel);

       MyPopupWindowDemo.this.changestatus

            .setOnCheckedChangeListener(new OnCheckedChangeListenerImpl());

       MyPopupWindowDemo.this.cancel.setOnClickListener(new OnClickListener(){

 

         public void onClick(View v) {

            MyPopupWindowDemo.this.popWin.dismiss() ; // 不显示

         }}) ;

       MyPopupWindowDemo.this.popWin.showAtLocation(

            MyPopupWindowDemo.this.popbut, Gravity.CENTER, 0, 0);

     }

  }

  private class OnCheckedChangeListenerImpl implements OnCheckedChangeListener {

 

    public void onCheckedChanged(RadioGroup group, int checkedId) {

       RadioButton but = (RadioButton) MyPopupWindowDemo.this.popView.findViewById(group

            .getCheckedRadioButtonId());  // 取得指定的单选钮被选中

       MyPopupWindowDemo.this.statusinfo.setText("您喜欢的三国人物为:" + but.getText().toString()) ;

       MyPopupWindowDemo.this.popWin.dismiss() ;

     }

    

  }

}

 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值