Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)

 

PopupWindow是一个可以用来显示一个任意的视图的弹出窗口,他需要完全依赖layout布局。

它没什么界面,在弹出的窗口中完全显示布局中的控件。




上面两个美女头就是弹窗PopupWindow显示的内容。是两个Button。


具体实现:

注意:那三个Button不能和普通的Button一样通过findViewById()方法获得,必须首先说的Button所在的视图,View popview = layoutInflater.inflate(R.layout.poplayout, null);

我的Button在poplayout.xml中。最后通过button1 = (Button) popview.findViewById(R.id.button1)获得。

另外一点就是:不要在oncreate()中获得Button,而是像我一样在onclick方法下获得,和popupwindow一起。这一点不一定正确。

为什么要提呢?因为我在oncreate()中获得Button时,button的点击事件不能用,我也不是很清楚。那位大牛要是知道的话,可以告诉我一下。

package xiaosi.popwindow;
  
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.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Toast;
  
public class PopwindowActivity extends Activity implements OnClickListener
{
     /** Called when the activity is first created. */
     private Button button = null ;
     private Button button1 = null ;
     private Button button2 = null ;
     private Button button3 = null ;
  
     @Override
     public void onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         button = (Button) findViewById(R.id.button);
         button.setOnClickListener( this );
     }
  
     public void onClick(View arg0)
     {
         if (arg0.getId() == R.id.button)
         {
             LayoutInflater layoutInflater = (LayoutInflater) (PopwindowActivity. this )
                     .getSystemService(LAYOUT_INFLATER_SERVICE);
             // 获取自定义布局文件poplayout.xml的视图
             View popview = layoutInflater.inflate(R.layout.poplayout, null );
             PopupWindow popWindow = new PopupWindow(popview,
                     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
             //规定弹窗的位置
             popWindow.showAtLocation(findViewById(R.id.main), Gravity.BOTTOM,
                     0 , 0 );
             //PopupWindow里的两个Button
             button1 = (Button) popview.findViewById(R.id.button1);
             button1.setOnClickListener( this );
             button2 = (Button) popview.findViewById(R.id.button2);
             button2.setOnClickListener( this );
         }
         else if (arg0.getId() == R.id.button1)
         {
             Toast.makeText(PopwindowActivity. this , "button1" , Toast.LENGTH_LONG)
                     .show();
         }
         else if (arg0.getId() == R.id.button2)
         {
             Toast.makeText(PopwindowActivity. this , "button2" , Toast.LENGTH_LONG)
                     .show();
         }
     }
}


poplayout.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version= "1.0" encoding= "utf-8" ?>
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     android:layout_width= "wrap_content"
     android:layout_height= "wrap_content"
     android:gravity= "center_horizontal"
     android:orientation= "horizontal" >
  
     <Button
         android:id= "@+id/button1"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:background= "@drawable/colorframe_1" />
  
     <Button
         android:id= "@+id/button2"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:background= "@drawable/colorframe_3" />
  
</LinearLayout>


main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version= "1.0" encoding= "utf-8" ?>
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     android:id= "@+id/main"
     android:layout_width= "fill_parent"
     android:layout_height= "fill_parent"
     android:orientation= "vertical" 
     android:background= "@drawable/background" >
  
     <Button
         android:id= "@+id/button"
         android:layout_width= "fill_parent"
         android:layout_height= "wrap_content"
         android:text= "点击查看效果" />
     <ImageView 
         android:layout_width= "fill_parent"
         android:layout_height= "wrap_content"
         android:src= "@drawable/a" />
  
</LinearLayout>



 

以上只是用来学习之用,拿出来和大家一起分享一下。

有想要源代码的给我留言。


来源:http://blog.csdn.net/sjf0115/article/details/7339914

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值