`

自定义Dialog

阅读更多
先看图:



布局search_dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ImageButton android:id="@+id/btn_search"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/search"
    />
    <EditText android:id="@+id/et_search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@id/btn_search"
    />
    <ListView android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/et_search"
    android:listSelector="@drawable/button_blue"
    />
</RelativeLayout>

应用之:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

import com.ql.activity.R;

public class SearchDialog extends Dialog{
	private Context context;
	private EditText et_search;
	private ImageButton btn_search;
	private ListView listview;
	public SearchDialog(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		this.context = context;
	}
	public SearchDialog(Context context, int theme) {  
        super(context, theme);  
        this.context = context;
    }  

	@Override  
	protected void onCreate(Bundle savedInstanceState) {  
	        super.onCreate(savedInstanceState);  
	          
	        setContentView(R.layout.search_dialog); 
	        
	        et_search  = (EditText)findViewById(R.id.et_search);
	        btn_search  = (ImageButton)findViewById(R.id.btn_search);
	        listview=(ListView)findViewById(R.id.listview);
	        ArrayList<Map<String,String>> data=new ArrayList<Map<String,String>>();
			Map<String,String> map=null;
			for(int i=0;i<10;i++){
				map=new HashMap<String,String>();
				map.put("simple_item_1", "item"+i);
				data.add(map);
			}
			int resource=R.layout.row_simple_list_item_1;
			String[] from={"simple_item_1"};
			int[] to={R.id.simple_item_1};
			SimpleAdapter adapter=new SimpleAdapter(context, data, resource, from, to);
			listview.setAdapter(adapter);
			listview.setOnItemClickListener(new OnItemClickListener() {
				
				@Override
				public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
					// TODO Auto-generated method stub
					TextView tv=(TextView)v.findViewById(R.id.simple_item_1);
					et_search.setText(tv.getText());
				}
			});
			btn_search.setOnClickListener(new View.OnClickListener() {
				
				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					Toast.makeText(context, "searching", Toast.LENGTH_SHORT).show();
				}
			});
			
	}
}


试用之:
SearchDialog dialog=new SearchDialog(Test_3_Activity.this,R.style.Theme_NoTitleDialog);
dialog.show();
上面的代码试用的是带有Theme的第2个构造函数,这样可以指定Dialog的样式
<style name="Theme_NoTitleDialog" parent="android:Theme.Dialog">
      <item name="android:windowNoTitle">true</item>
</style> 


若使用第一个构造函数,则需要带有title:
SearchDialog dialog=new SearchDialog(Test_3_Activity.this);
dialog.setTitle("Search Item");
dialog.show();
效果如下:



http://gundumw100.iteye.com/admin/blogs/869742

任意地方显示对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
   LayoutInflater inf = getLayoutInflater();
    View layout = inf.inflate(R.layout.main, null);
    builder.setView(layout);
    builder.setTitle("Add to Home screen");
AlertDialog dialog = builder.create();
    WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
    int dialogOriginalHeight = WMLP.height;
WMLP.height += 750;
Log.i("XnY", "x="+WMLP.x+", y="+WMLP.y);
WMLP.x = -10;   //x position
WMLP.y = -10;   //y position
Log.i("XnY", "x="+WMLP.x+", y="+WMLP.y);
dialog.getWindow().setAttributes(WMLP);
Log.i("POSITION", "POS::HEIGHT:"+WMLP.height);
dialog.show();


改变Android 对话框位置及边框
关键是取得Window
        Window w=getWindow();

修改边框:
        w.setBackgroundDrawableResource(rc);
        rc为资源ID

改变位置:
        WindowManager.LayoutParams wl = w.getAttributes();
        wl.x = xNewPos;
        wl.y = yNewPos;
        w.setAttributes(wl);
1、对话框缺省居中wl.x=0,wl.y=0
     新坐标 x小于0左移,大于0右移;y小于0上移,大于0下移
2、无论x,y设什么值,对话框也不会移出到屏幕外。
     我试过x,y设成-1000,显示在左上角,没移出去。

自定义对话框的大小
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay();	//为获取屏幕宽、高

LayoutParams p = getWindow().getAttributes();  //获取对话框当前的参数值
p.height = (int) (d.getHeight() * 0.6);   //高度设置为屏幕的0.6
p.width = (int) (d.getWidth() * 0.95);    //宽度设置为屏幕的0.95

getWindow().setAttributes(p);     //设置生效


Android dialog 全屏
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Transparent">  
    <item name="android:windowBackground">@color/transparent_background</item>  
    <item name="android:windowNoTitle">true</item>  
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowIsTranslucent">true</item>     
    <item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>  
  </style>
</resources>

其中transparent_background为颜色值:#50000000,透明度为50
然后:
final Dialog dialog = new Dialog(this,R.style.Transparent);
  • 大小: 15.3 KB
  • 大小: 11.9 KB
分享到:
评论

相关推荐

    各种自定义Dialog 以及Dialog加载动画

    在Android开发中,自定义Dialog和Dialog加载动画是提升应用用户体验的重要手段。默认的Dialog样式虽然功能齐全,但在追求个性化和美观的今天,往往显得过于简单甚至有些过时。因此,开发者常常需要根据应用的设计...

    android 自定义Dialog提示+动画效果

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据应用的UI风格和功能需求进行个性化设计。本文将深入探讨如何实现一个带有动画效果的自定义Dialog,并以"android 自定义Dialog提示+动画效果"为主题...

    自定义dialog仿ios风格的dialog

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者创建具有独特设计和功能的对话框,以符合应用的品牌风格或提供更丰富的用户体验。本文将深入探讨如何在Android中实现一个仿iOS风格的Dialog,并根据...

    自定义Dialog.zip

    "自定义Dialog.zip" 包含了一个实现七种动画效果的自定义Dialog示例,这将帮助开发者学习如何根据需求创建富有创意的弹出窗口。 首先,我们要了解Dialog的基本结构。Dialog通常由布局文件定义,包括标题(title)、...

    Android:自定义Dialog-Demo

    当系统默认的Dialog样式不能满足应用的特定需求时,开发者常常会选择自定义Dialog来实现更个性化的界面和交互体验。本示例"Android:自定义Dialog-Demo"就是针对这种情况提供的一种解决方案。 首先,我们来看自定义...

    Android支付底部弹窗自定义dialog

    接下来,我们需要创建自定义Dialog类,继承自`AppCompatDialogFragment`。在这个类中,我们将加载上面创建的布局,并实现点击事件处理。 ```java public class BottomPaymentDialog extends ...

    自定义Dialog对话框(实现微信分享对话框)

    在Android开发中,自定义Dialog对话框是一种常见的需求,它能提供更为丰富的用户交互体验,尤其是在需要用户进行特定选择或操作时。本教程将详细讲解如何实现一个类似于微信分享的自定义Dialog对话框。 首先,我们...

    自定义dialog弹出框

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据应用的设计风格和功能需求创建具有独特外观和交互效果的对话框。本教程将深入探讨如何实现自定义Dialog,包括利用Shape和Selector来定制样式,以及...

    小程序自定义dialog

    在微信小程序中,自定义dialog(对话框)是一种常见的用户交互设计,用于向用户展示重要信息或进行简单操作确认。自定义dialog可以帮助开发者摆脱微信小程序内置组件的限制,实现更符合应用风格和功能需求的设计。本...

    自定义dialog

    "自定义Dialog"则是对系统默认Dialog样式进行扩展和改造,以满足更个性化的界面设计和功能需求。下面我们将深入探讨如何在Android中自定义Dialog。 一、自定义Dialog的基本步骤 1. 创建布局文件:首先,我们需要...

    android自定义Dialog的简单实现

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据应用的设计风格或者特定功能来创建具有独特外观和行为的对话框。本篇文章将详细解析如何在Android中实现一个简单的自定义Dialog,以及相关的知识点...

    android自定义dialog嵌套listview

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者创建具有特定布局和功能的对话框,以提供更丰富的用户体验。本篇文章将深入探讨如何在Android中实现一个自定义Dialog并嵌套ListView,同时实现点击事件...

    qml 用item自定义dialog 对话框

    本文将深入探讨如何使用QML中的`Item`来创建一个自定义的`Dialog`组件。 首先,了解`Dialog`的基本概念。在Qt Quick中,`Dialog`是一个用于展示临时信息或进行用户交互的窗口,通常会有一个确定的关闭机制,如点击...

    Android 自定义dialog

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据应用的UI风格和功能需求创建具有独特设计和交互方式的对话框。本篇将深入探讨如何在Android中实现自定义Dialog,包括基本原理、步骤以及相关的代码...

    自定义Dialog简单解决多级菜单多选问题

    在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面展示和定制化功能。在处理多级菜单多选问题时,传统的做法可能会导致代码复杂度增加,逻辑难以维护。本文将深入探讨如何通过自定义...

    Android利用建造者模式自定义Dialog

    在Android开发中,面对应用程序界面的多样化和个性化需求,自定义Dialog是一种常见的解决方案。建造者模式,作为一种设计模式,能够帮助我们优雅地构建复杂对象,它将对象的创建过程逐步分解,使得创建过程更加灵活...

    自定义dialog实现登录框

    在Android开发中,自定义Dialog是一种常见的用户界面(UI)设计技术,用于提供与用户交互的弹出式窗口。通常,我们使用Dialog来显示重要的信息、提示或进行简单的操作,如登录、注册等。本教程将详细介绍如何在...

    自定义Dialog加ListView

    在本项目中,“自定义Dialog加ListView”就是将`Dialog`与`ListView`结合,创建一个可以展示列表数据的弹出窗口,以提供更加丰富的用户交互体验。 首先,我们需要理解`Dialog`的基本用法。在Android中,我们可以...

Global site tag (gtag.js) - Google Analytics