国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 中自定義Dialog樣式的Activity點(diǎn)擊空白處隱藏軟鍵盤功能(dialog不消失)

2019-10-23 18:30:15
字體:
供稿:網(wǎng)友

一、需求觸發(fā)場景:

項(xiàng)目中需要開發(fā)帶有EditText的Dialog顯示,要求在編輯完EditText時(shí),點(diǎn)擊Dilog的空白處隱藏軟鍵盤。但是Dialog不會消失。示例如下:

activity,dialog,樣式,dialog樣式的activity

二、實(shí)現(xiàn)方法:

發(fā)布需求時(shí),我個(gè)人曾想過直接通過new的方式直接創(chuàng)建Dialog,經(jīng)過多次嘗試,無法實(shí)現(xiàn)要求,所以采用將Activity設(shè)置為Dialog樣式進(jìn)行展示,調(diào)用方法實(shí)現(xiàn)需求。具體實(shí)現(xiàn)如下:

本次演示示例的工程結(jié)構(gòu):

activity,dialog,樣式,dialog樣式的activity

2.1AndroidMainfest.xml配置文件

需要在配置文件中將需要顯示為dialog樣式的activity添加dialog主題(可調(diào)用系統(tǒng)自帶也可以自定義主題添加)

<?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實(shí)現(xiàn)代碼

(1)BaseActivity作為本次Demo中Activity的基類,代碼實(shí)現(xiàn)如下:

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實(shí)現(xiàn)代碼如下:

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按鈕觸發(fā)事件方法  public void dialog(View view){    Intent intent = new Intent(this,Main2Activity.class);    startActivity(intent);  }}

(3)Main2Activity作為dialog樣式的Activity實(shí)現(xiàn)代碼如下:

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);    //設(shè)置窗口對齊屏幕寬度    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;//設(shè)置對話框置頂顯示    win.setAttributes(lp);    //設(shè)置點(diǎn)擊外部空白處可以關(guān)閉Activity    this.setFinishOnTouchOutside(true);  }}

以上所述是小編給大家介紹的Android 中自定義Dialog樣式的Activity點(diǎn)擊空白處隱藏軟鍵盤功能(dialog不消失),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 山东| 正定县| 灵山县| 新乡县| 文山县| 贡嘎县| 沙洋县| 舒兰市| 盐亭县| 临夏县| 泽库县| 双江| 石狮市| 西贡区| 上高县| 潮州市| 澄城县| 积石山| 宜川县| 巴东县| 哈密市| 安平县| 安溪县| 漠河县| 彩票| 株洲县| 外汇| 南部县| 盘锦市| 昭觉县| 赤城县| 昌邑市| 元阳县| 辽阳县| 淮阳县| 和政县| 牟定县| 井冈山市| 淳安县| 广西| 大姚县|