`

DIalog与popWindow布局

阅读更多

Android默认的PopupWindow和EditText的外观是矩形框,看起来不是太好,本示例通过设置布局View的背景和PopupWindowd对象的背景,实现有白色圆角边框的对话框效果和圆角文字编辑框。代码如下(关键部分是背景布局XML):

 


 

对话框弹出效果图:



 

Java代码  复制代码
  1. package  com.test;   
  2.   
  3. import  android.app.Activity;   
  4. import  android.content.Context;   
  5. import  android.os.Bundle;   
  6. import  android.text.InputType;   
  7. import  android.view.Gravity;   
  8. import  android.view.LayoutInflater;   
  9. import  android.view.View;   
  10. import  android.view.View.OnClickListener;   
  11. import  android.widget.Button;   
  12. import  android.widget.EditText;   
  13. import  android.widget.PopupWindow;   
  14. import  android.widget.LinearLayout.LayoutParams;   
  15.   
  16.   
  17. public   class  RoundCorner  extends  Activity {   
  18.   
  19.     Button mButton;    
  20.   
  21.      @Override   
  22.      public   void  onCreate(Bundle savedInstanceState) {   
  23.          super .onCreate(savedInstanceState);   
  24.         setContentView(R.layout.main);   
  25.            
  26.          // 定义按钮    
  27.         mButton = (Button)  this .findViewById(R.id.Button01);   
  28.         mButton.setOnClickListener( new  ClickEvent());   
  29.            
  30.          // 两个圆角文字编辑框    
  31.         EditText et1 = (EditText)  this .findViewById(R.id.roundedtext1);   
  32.         EditText et2 = (EditText)  this .findViewById(R.id.roundedtext2);   
  33.         et1.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);   
  34.         et2.setInputType(InputType.TYPE_NULL);  //不显示软键盘    
  35.            
  36.     }   
  37.   
  38.      // 处理按键事件    
  39.      class  ClickEvent  implements  OnClickListener {   
  40.          @Override   
  41.          public   void  onClick(View v) {   
  42.              if  (v == mButton) {   
  43.                 showRoundCornerDialog(RoundCorner. this , RoundCorner. this .findViewById(R.id.Button01));   
  44.             }   
  45.         }   
  46.     }   
  47.   
  48.      // 显示圆角对话框    
  49.      public   void  showRoundCornerDialog(Context context, View parent) {   
  50.         LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);   
  51.            
  52.          // 获取圆角对话框布局View,背景设为圆角    
  53.          final  View dialogView = inflater.inflate(R.layout.popupwindow,  null false );   
  54.         dialogView.setBackgroundResource(R.drawable.rounded_corners_view);    
  55.            
  56.          // 创建弹出对话框,设置弹出对话框的背景为圆角     
  57.          final  PopupWindow pw =  new  PopupWindow(dialogView,  300 , LayoutParams.WRAP_CONTENT,  true );   
  58.         pw.setBackgroundDrawable(getResources().getDrawable(R.drawable.rounded_corners_pop));   
  59.            
  60.          //注:上面的设背景操作为重点部分,可以自行注释掉其中一个或两个设背景操作,查看对话框效果    
  61.          //注:上面的设背景操作为重点部分,可以自行注释掉其中一个或两个设背景操作,查看对话框效果    
  62.            
  63.          final  EditText edtUsername = (EditText) dialogView.findViewById(R.id.username_edit);   
  64.          final  EditText edtPassword = (EditText) dialogView.findViewById(R.id.password_edit);   
  65.         edtUsername.setHint( "用户名..." );  // 设置提示语    
  66.         edtPassword.setHint( "密码..." );    // 设置提示语    
  67.   
  68.          // OK按钮及其处理事件    
  69.         Button btnOK = (Button) dialogView.findViewById(R.id.BtnOK);   
  70.         btnOK.setOnClickListener( new  OnClickListener() {   
  71.              @Override   
  72.              public   void  onClick(View v) {   
  73.                  // 设置文本框内容    
  74.                 edtUsername.setText( "username" );   
  75.                 edtPassword.setText( "password" );   
  76.             }   
  77.         });   
  78.   
  79.          // Cancel按钮及其处理事件    
  80.         Button btnCancel = (Button) dialogView.findViewById(R.id.BtnCancel);   
  81.         btnCancel.setOnClickListener( new  OnClickListener() {   
  82.              @Override   
  83.              public   void  onClick(View v) {   
  84.                 pw.dismiss(); // 关闭    
  85.             }   
  86.         });   
  87.            
  88.          // 显示RoundCorner对话框    
  89.         pw.showAtLocation(parent, Gravity.CENTER|Gravity.BOTTOM,  0 0 );   
  90.     }   
  91.        
  92. }  

 

 

1,圆角对话框的背景布局文件XML。

--------rounded_corners_pop.xml此为PopupWindow的背景布局文件

Java代码  复制代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>   
  2. <shape xmlns:android= "http://schemas.android.com/apk/res/android" >   
  3.     <solid android:color= "#ffffffff"  />   
  4.        
  5.     <stroke android:width= "3dp"  color= "#ffff8080"  />   
  6.        
  7.     <corners android:radius= "10dp"  />   
  8.        
  9.     <padding android:left= "3dp"  android:top= "3dp"     
  10.         android:right= "3dp"  android:bottom= "3dp"  />   
  11. </shape>  

 

--------rounded_corners_view.xml此为对话框内容的背景布局文件

Java代码  复制代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>   
  2. <shape xmlns:android= "http://schemas.android.com/apk/res/android" >   
  3.     <solid android:color= "#ff606060"  />   
  4.        
  5.     <stroke android:width= "3dp"  color= "#ffff8080"  />   
  6.        
  7.     <corners android:radius= "10dp"  />   
  8.        
  9.     <padding android:left= "5dp"  android:top= "5dp"     
  10.         android:right= "5dp"  android:bottom= "5dp"  />   
  11. </shape>  

 

 2,圆角文字编辑框的三个布局XML文件

---------rounded_edittext_states.xml

Java代码  复制代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>    
  2. <selector xmlns:android= "http://schemas.android.com/apk/res/android" >    
  3.     <item     
  4.         android:state_pressed= "true"      
  5.         android:state_enabled= "true"     
  6.         android:drawable= "@drawable/rounded_focused"  />    
  7.     <item     
  8.         android:state_focused= "true"      
  9.         android:state_enabled= "true"     
  10.         android:drawable= "@drawable/rounded_focused"  />    
  11.     <item     
  12.         android:state_enabled= "true"     
  13.         android:drawable= "@drawable/rounded_edittext"  />    
  14. </selector>   

 

----------rounded_edittext.xml

Java代码  复制代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>    
  2. <shape xmlns:android= "http://schemas.android.com/apk/res/android"     
  3.     android:shape= "rectangle"     
  4.     android:padding= "8dip" >    
  5.     <solid android:color= "#FFFFFF" />    
  6.     <corners    
  7.         android:bottomRightRadius= "10dip"     
  8.         android:bottomLeftRadius= "10dip"     
  9.         android:topLeftRadius= "10dip"     
  10.         android:topRightRadius= "10dip" />    
  11. </shape>  

 

-----------rounded_edittext_focused.xml

Java代码  复制代码
  1. <?xml version= "1.0"  encoding= "utf-8" ?>    
  2. <shape xmlns:android= "http://schemas.android.com/apk/res/android"     
  3.     android:shape= "rectangle"     
  4.     android:padding= "8dip" >    
  5.     <solid android:color= "#FFFFFF" />    
  6.     <stroke android:width= "2dip"  android:color= "#FF0000"  />    
  7.     <corners    
  8.         android:bottomRightRadius= "10dip"     
  9.         android:bottomLeftRadius= "10dip"     
  10.         android:topLeftRadius= "10dip"     
  11.         android:topRightRadius= "10dip" />    
  12. </shape>   

 

3,对话框的布局文件popupwindow.xml

,
分享到:
评论
1 楼 guochongcan 2011-09-28  
请问怎么做收藏啊,有资料吗1005428512@qq.com发一下

相关推荐

    安卓Dialog对话框相关-自定义单选多选对话框及popwindow窗口实例源码.rar

    与Dialog不同,PopWindow更加灵活,它可以显示在屏幕的任何位置,且不需要遵循Activity的生命周期。在`CustomDialogDemo`中,开发者可能创建了一个自定义的PopupWindow类,包含了自定义的布局和触摸事件处理。...

    PopWindow和Dialog示例

    在`PopwindowAndDialog`文件中,可能包含了这些示例的代码实现,包括`PopWindow`和`Dialog`的布局文件、Java或Kotlin类以及显示它们的方法。通过阅读和理解这些代码,开发者可以更好地掌握如何在实际项目中运用`...

    Android dialog单选、多选弹窗

    与Dialog不同,PopWindow没有预设的外观,完全由开发者自定义。它常用于快速操作或者显示额外的信息,如下拉菜单、快捷工具栏等。创建PopWindow通常涉及创建一个布局,然后通过PopupWindow类实例化并显示。 5. **...

    基于PopWindow底部菜单栏

    不同于Dialog,PopWindow并不继承自Dialog类,而是直接继承自ViewGroup,因此在使用上具有更大的灵活性。在创建PopWindow时,我们需要定义其内容视图、宽度和高度。 实现"基于PopWindow的底部菜单栏",首先需要创建...

    实现相同效果的popWindow和Dialog封装

    1. **创建Dialog类**: 创建一个继承自`AppCompatDialog`的类,并重写`onCreate()`方法,加载自定义布局。 ```java public class CustomDialog extends AppCompatDialog { public CustomDialog(Context context, int...

    PopWindow测试

    与Dialog相比,PopWindow更加灵活,可以在界面上浮动,而Dialog则总是位于Activity之上。 在描述中提到的“focus问题”,可能是指当PopWindow弹出时,与之相关的焦点管理问题。例如,如果PopWindow中包含可点击的...

    PopWindow实现多级菜单显示

    相比于Dialog,`PopWindow`不会阻塞用户与背景视图的交互,更加灵活。 实现多级菜单的核心思路是通过递归或者循环的方式,为每一级菜单创建并显示`PopWindow`。以下是一个简单的步骤概述: 1. **创建PopWindow**:...

    android自定义单选、多选对话框及popwindow窗口实例源码

    在“CustomDialogDemo”源码中,你将看到如何将这些概念应用于实际项目中,包括如何组织XML布局文件、如何在Java代码中实例化和控制对话框与PopWindow,以及如何响应用户交互。通过学习和研究这个示例,开发者可以更...

    Android应用源码之PopWindow.zip

    3. 考虑不同设备尺寸:在设计PopWindow布局时,需考虑不同屏幕尺寸,确保在各种设备上显示正常。 总之,PopWindow是Android开发中的一个重要工具,理解和熟练使用PopWindow能够极大地提升应用的交互体验。通过...

    自定义PopWindow实现,所有view上层显示。希望对大家有帮助。

    PopWindow是Android中的一个轻量级窗口,它不像Dialog那样需要完整的主题背景,而是可以像一个小部件一样浮现在屏幕的任意位置。通常用于快速操作或展示临时信息。 实现自定义PopWindow的第一步是创建布局文件。在...

    使用PopWindow实现选择菜单

    与Dialog不同,PopWindow并不阻塞用户与背景界面的交互,因此更适合创建类似快捷菜单的效果。 在`描述`中提到,通过点击菜单项可以触发相应的动画效果,这涉及到对PopWindow的自定义以及动画的设置。实现这一功能...

    仿京东筛选 不是使用popwindow 和 dialog 做的

    这个项目不采用`PopupWindow`和`Dialog`来构建筛选界面,而是选择了其他方式来达成这一目标,可能是为了提供更自定义的用户体验或者解决特定场景下的限制。下面将详细解释这种非`PopupWindow`和`Dialog`的筛选实现...

    popwindow+listview

    与Dialog相比,它不需要主题风格,可以在任意位置显示,并且可以自定义布局。 - 创建PopWindow的基本步骤包括:创建一个View,通过PopupWindow类实例化,设置宽度、高度、背景透明度等属性,最后调用showAsDropDown...

    android 自定义单选、多选对话框及popwindow窗口实例源码.zip

    1. 创建布局资源文件,定义PopWindow的显示内容。 2. 使用`LayoutInflater`加载布局。 3. 创建`PopupWindow`对象,传入加载好的布局视图和宽度、高度。 4. 设置是否允许点击PopWindow外部关闭、背景透明度等属性。 5...

    popwindow弹窗.zip

    在Android应用设计中,PopWindow提供了比对话框(Dialog)更多的灵活性,因为它可以自定义大小、位置,并且不会阻塞用户与背景界面的交互。本篇文章将深入探讨PopWindow的原理、使用方法以及如何实现自定义功能。 ...

    Android应用源码之自定义单选、多选对话框及popwindow窗口实例源码.zip

    在Android开发中,自定义对话框(Dialog)和PopWindow是两种常见的用户界面组件,用于增强用户体验和提供交互式操作。这些组件可以帮助开发者在主应用界面之上显示临时性信息或功能,比如设置、选择列表、通知等。在...

    android自定义PopWindow

    `PopWindow`是Android中的一个轻量级窗口,它不像`Dialog`那样需要依附于Activity,而是可以直接显示在屏幕的任意位置。它可以包含任意的View,如按钮、文本、列表等,因此非常适合用来构建各种交互界面。 自定义`...

    一个更多按钮popwindow

    PopWindow通常用于实现下拉菜单、提示信息等效果,与Dialog相比,它的使用更加灵活,不会阻塞整个应用程序的交互。 实现"更多按钮"的PopWindow,需要以下步骤: 1. 创建PopWindow的布局:在XML中定义PopWindow显示...

Global site tag (gtag.js) - Google Analytics