`
bashenmail
  • 浏览: 228583 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义Dialog

阅读更多



 代码如下:

SearchDialog.java

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public class SearchDialog extends Dialog {

    private ImageButton key_button,author_button,package_button;
    
    private EditText keyword_Text,author_Text,package_Text;
    
    private Button advanced_button,sumbit_button;
    
    private boolean isExpand = true;
    
    private Context context;
    
    private Intent intent;
    
	public SearchDialog(Context context){
		
		super(context);
		
		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);
		
		//搜关键字按钮
		key_button  = (ImageButton)findViewById(R.id.key_button);
		
		//搜作者按钮
		author_button = (ImageButton)findViewById(R.id.author_button);
		
		//搜包名按钮
		package_button = (ImageButton)findViewById(R.id.package_button);
		
		//高级按钮
		advanced_button = (Button)findViewById(R.id.advanced_button);
		
		//设置监听
		key_button.setOnClickListener(myOnClickListener);
		author_button.setOnClickListener(myOnClickListener);
		package_button.setOnClickListener(myOnClickListener);
		advanced_button.setOnClickListener(myOnClickListener);
		
		//关键字输入框
		keyword_Text = (EditText)findViewById(R.id.key_edit);
		
		//作者输入框
		author_Text = (EditText)findViewById(R.id.author_edit);
		
		//包名输入框
		package_Text = (EditText)findViewById(R.id.package_edit);
		
		//提交按钮
		sumbit_button = (Button)findViewById(R.id.sumbit_button);
		
		sumbit_button.setOnClickListener(myOnClickListener);
		
		showOthers();
	}

	private void showOthers(){
		
		if(isExpand){
			
			//默认隐藏其它搜索框和提交按钮
			author_button.setClickable(false);
			package_button.setClickable(false);
			author_Text.setEnabled(false);
			package_Text.setEnabled(false);
			
		}else{
			
			//显示其它选项
			author_button.setClickable(true);
			package_button.setClickable(true);
			author_Text.setEnabled(true);
			package_Text.setEnabled(true);
		}
	}
	
	private View.OnClickListener myOnClickListener = new View.OnClickListener() {
		
		public void onClick(View v) {
			
			try {
				
				intent = new Intent("android.intent.action.VIEW");
				
				switch(v.getId()){
				case R.id.key_button:
					
					String words = keyword_Text.getText().toString().trim();
					
					if(words.length()>0){
						
						intent.setData(Uri.parse("market://search?q="+words));
						
						dismiss();
						
						context.startActivity(intent);
						
						
					}else{
						dismiss();
						
						showNotice(R.string.nowords);
					}
					break;
				case R.id.author_button:
					
					words = author_Text.getText().toString().trim();
					
					if(words.length()>0){
						
						intent.setData(Uri.parse("market://search?q=pub:"+words));
						
						dismiss();
						
						context.startActivity(intent);
						
						
					}else{
						dismiss();
						
						showNotice(R.string.nowords);
					}
					break;
				case R.id.package_button:
					
					words = package_Text.getText().toString().trim();
					
					if(words.length()>0){
						
						intent.setData(Uri.parse("market://search?q=pname:"+words));
						
						dismiss();
						
						context.startActivity(intent);
						
					}else{
						dismiss();
						
						showNotice(R.string.nowords);
					}
					break;
				case R.id.advanced_button:
					
					isExpand = isExpand == true?false:true;
					
					showOthers();
					
					break;	
				case R.id.sumbit_button:
					
					Intent submitIntent = new Intent("android.intent.action.VIEW");
					
					String keywords = keyword_Text.getText().toString().trim();
					
					String author = author_Text.getText().toString().trim();
					
					String pack = package_Text.getText().toString().trim();
					
					String url = "market://search?";
					
					if(keywords.length()>0||author.length()>0||pack.length()>0){
						
						if(keywords.length()>0){
							
							url+="q="+keywords;
							if(author.length()>0){
								
								url+=" pub:"+author;
							}
							if(pack.length()>0){
								
								url+=" pname:"+pack;
							}
						}else if(author.length()>0){
							
							url += "q=pub:"+author;
							
							if(pack.length()>0){
								
								url+=" pname:"+pack;
							}
						}else if(pack.length()>0){
							
							url+="q=pname:"+pack;
						}
						
						submitIntent.setData(Uri.parse(url));
						
						context.startActivity(submitIntent);
						
						dismiss();
					}else{
						dismiss();
						
						showNotice(R.string.nowords);
					}
					
					break;	
				}
			} catch (Exception e) {
				
				e.printStackTrace();
			}
		}
	};
	
	private void showNotice(int id){
		
		Toast.makeText(context, context.getResources().getText(id), Toast.LENGTH_LONG).show();
	}
}

 

Layout:

<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content">
<LinearLayout 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    	
    <!-- 关键字 -->	    
    <LinearLayout
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:orientation="horizontal"
    	android:minWidth="280dip">
    	
    	<ImageButton 
    		android:id="@+id/key_button"
    		android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:src="@drawable/search_search"
    	    />
       <EditText
	    	android:id="@+id/key_edit"
	    	android:layout_width="fill_parent"
	    	android:layout_height="wrap_content"
	    	android:hint="@string/search_keyword"/>    
    </LinearLayout>
    
    <!-- 作者 -->     
    <LinearLayout 
    	android:id="@+id/author_layout"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:orientation="horizontal">
    
    	<ImageButton 
    		android:id="@+id/author_button"
    		android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:src="@drawable/search_author"/>
    	<EditText
	    	android:id="@+id/author_edit"
	    	android:layout_width="fill_parent"
	    	android:layout_height="wrap_content"
	    	android:hint="@string/search_author"/>	
    </LinearLayout>	    
    	
    <!-- 包名 -->     
    <LinearLayout 
    	android:id="@+id/package_layout"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:orientation="horizontal">
    
    	<ImageButton 
    		android:id="@+id/package_button"
    		android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:src="@drawable/search_package"/>
    	<EditText
	    	android:id="@+id/package_edit"
	    	android:layout_width="fill_parent"
	    	android:layout_height="wrap_content"
	    	android:hint="@string/search_package"/>	
    </LinearLayout>	
    	
    <!-- 高级 -->
   	<LinearLayout 
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:orientation="horizontal">
    
    	<Button 
    		android:id="@+id/advanced_button"
    		android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:text="@string/search_advanced"/> 
    	<Button 
	   		android:id="@+id/sumbit_button"
	   		android:layout_width="fill_parent"
		    android:layout_height="wrap_content"
		    android:text="OK"/>
    </LinearLayout>
            
</LinearLayout>
</ScrollView> 

 

 调用代码:

SearchDialog dialog = new SearchDialog(this);
		
		dialog.setTitle(R.string.market_search);
		
		dialog.show();

 如图:



 

  • 大小: 12.1 KB
  • 大小: 13.5 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

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

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

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

    qml 用item自定义dialog 对话框

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

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

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

    自定义dialog实现登录框

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

    自定义Dialog加ListView

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

    安卓自定义dialog背景和边框

    在自定义Dialog时,首要任务是创建一个XML布局文件,用于定义Dialog的显示内容和外观。你可以根据需求添加控件,如TextView、EditText、ImageView等,并设置相应的布局属性,以达到想要的效果。例如,你可以为...

Global site tag (gtag.js) - Google Analytics