• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog

Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog


一、需求触发场景:

项目中需要出发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘。但是Dialog不会消失。示例如下:

二、实现方法:

发布需求时,我个人曾想过直接通过new的方式直接创建Dialog,经过多次尝试,无法实现要求,所以采用将Activity设置为Dialog样式进行展示,调用方法实现需求。具体实现如下: 本次演示示例的工程结构:

 

2.1AndroidMainfest.xml配置文件

需要在配置文件中将需要显示为dialog样式的activity添加dialog主题(可调用系统自带也可以自定义主题添加)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.panhouye.dialoginput">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main2Activity"
           android:theme="@style/Base.V7.Theme.AppCompat.Light.Dialog"></activity>
    </application>
</manifest>

2.2Java实现代码

(1)BaseActivity作为本次Demo中Activity的基类,代码实现如下:
package com.panhouye.dialoginput;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.inputmethod.InputMethodManager;

/**
 * Created by pamhouye on 2017/4/25 0025.
 */

public class BaseActivity extends AppCompatActivity {
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        if(event.getAction() == MotionEvent.ACTION_DOWN){
            if(getCurrentFocus()!=null && getCurrentFocus().getWindowToken()!=null){
                InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
        return super.onTouchEvent(event);
    }
}

(2)MainActivity实现代码如下:

package com.panhouye.dialoginput;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //dialog按钮触发事件方法
    public void dialog(View view){
        Intent intent = new Intent(this,Main2Activity.class);
        startActivity(intent);
    }
}

(3)Main2Activity作为dialog样式的Activity实现代码如下:

package com.panhouye.dialoginput;

import android.os.Bundle;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;

public class Main2Activity extends BaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //设置窗口对齐屏幕宽度
        Window win = this.getWindow();
        win.getDecorView().setPadding(0, 0, 0, 0);
        WindowManager.LayoutParams lp = win.getAttributes();
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        lp.gravity = Gravity.CENTER;//设置对话框置顶显示
        win.setAttributes(lp);
        //设置点击外部空白处可以关闭Activity
        this.setFinishOnTouchOutside(true);
    }
}
就这样一直肤浅下去喽,洗洗睡啦

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog

相关文章

  • 2017-05-26android布局不带参数返回,android布局参数
  • 2017-05-26硅谷商城3--购物车数据存储器,3--购物车
  • 2017-05-26Linux目录与文件权限的意义
  • 2017-05-26Android中的沉浸式状态栏效果,android沉浸状态栏
  • 2017-05-26Android客户端采用Http 协议Post方式请求与服务端进行数据交互
  • 2017-05-26浅谈Android 通过ADB Wireless无线调试应用
  • 2017-05-26SDK manager.exe 运行时报错:系统找不到指定的文件 android.bat,sdkmanager.bat
  • 2017-05-26Android--activity切换时的动画,android--activity
  • 2017-05-26在Android studio中进行单元测试和ui测试的分析
  • 2017-05-26FragmentTabHost的基本用法,fragmenttabhost

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • [原创]Eclipse 安卓开发几个异常的处理办法,eclipse安卓
    • Android触摸事件(一)-AbsTouchEventHandle
    • lua中使用luasocket通信,写了一个简单的事件库
    • Android java层音频相关的分析与理解(三)调用相关
    • 安卓--shape简单使用,安卓--shape
    • EventBus简单使用教程
    • Android Studio Lambda Config,androidlambda
    • TextView 实现跑马灯效果,textview实现跑马灯
    • [android] 手机卫士接收短信指令执行相应操作,android接收短信
    • android 打造炫酷导航栏(仿UC头条)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有