Andriod中自定義Dialog樣式的Activity點選空白處隱藏軟體盤(Dialog不消失)
一、需求觸發場景:
專案中需要出發帶有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);
}
}
就這樣一直膚淺下去嘍,洗洗睡啦
相關推薦
Andriod中自定義Dialog樣式的Activity點選空白處隱藏軟體盤(Dialog不消失)
一、需求觸發場景: 專案中需要出發帶有EditText的Dialog顯示,要求在編輯完EditText時,點選Dilog的空白處隱藏軟鍵盤。但是Dialog不會消失。示例如下: 二、實現方法: 釋出需求時,我個人曾想過直接通過new的方式直接建立Dialog,經過多次嘗試
8.0 Notification的使用1. 普通的notification 2. 帶進度條的notification 3. 自定義的notification,點選事件進入軟體的一個activity
實現功能: 最終效果: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.
解決DialogFragment中自定義佈局的按鈕點選事件無效
在DialogFragment中如果有時會突然發現我們寫的自定義佈局的點選事件無效,如果寫在onCreateView()方法中,如果又重寫了onCreateDialog()方法,建議把控制元件的初始化和
Android-UI佈局---RecyclerView學習(一)在介面卡中自定義長按和點選事件
該系列文章 如果想全方面學習,建議參考這個大牛的文章,寫的真可以。 地址:http://blog.csdn.net/lmj623565791/article/details/45059587 因為RecyclerView沒有點選、長按事件,需要自己寫 實現的方式比較多,
Vue 實現點選空白處隱藏某節點(三種方式:指令、普通、遮罩)
在專案中往往會有這樣的需求: 彈出框(或Popover)在 show 後,點選空白處可以將其 hide。 針對此需求,整理了三種實現方式,大家按實際情況選擇。 當然,我們做專案肯定會用到 UI 框架,常見的 Element 中的元件提供了這樣的方法。 但是,就算使用框架,有些時候還是要用到的,比如: El
關於PyQt5中自定義訊號的幾點理解
訊號的定義 PyQt5中的訊號我的理解就像飯店出菜口的那個鈴,➡️ 需要的時候就是“叮”一下.然後廚師會叫出菜名或者桌號,服務員就會把菜送到正確的顧客桌上. 下面說正體:(此處不講什麼訊號與槽,single與slot,我覺得太複雜) 關於自定義訊號,你需要掌握
Android中自定義checkbox樣式
1.首先在drawable資料夾中新增drawable檔案checkbox_style.xml。 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas
flutter - 點選事件(一) - 自定義一個方便的點選控制元件
android中,所有View都可以直接setOnClickListener, RN中也有TouchableHightlight這樣的控制元件可以直接套在外面,ios中也可以有UIControl 這樣的控制元件可以直接新增點選事件. 那麼flutter中有嗎? 答案自然是有. Ges
關於android自定義字型顏色和點選改變字型顏色
先看效果圖 上面的為點選按下的效果圖 上面的為預設的(鬆開按鈕)的效果圖 首先我們先在values資料夾下新建一個color.xml檔案 這檔案就是配置我們要使用的顏色 程式碼如下 <?xml version="1.0" encoding
自定義元件 點選空白處隱藏
程式碼實現: <template> <div> <div class="show" v-show="show" v-clickoutside="handleClose"> 顯示 </div>
[PyQt] 自定義QSlider支援滑鼠點選和滾輪事件
from PyQt4.QtGui import * from PyQt4.QtCore import * class progressSlider(QSlider): def __init__(self, orientation, parent=None): su
ios-swift-為圖片控制元件(自定義控制元件)新增點選事件
@IBOutlet var img_guanggao: UIImageView! override func viewDidLoad() { super.viewDidLoad(
百度地圖API自定義覆蓋物與新增點選事件
本文適合零基礎百度地圖API開發者 效果圖1 效果圖2 直接上程式碼;另注:code上面很多是釣魚君自己寫的動態的資料,所以不能拿過去馬上可以用,本文只提供借鑑,不保證100%原創,但功能是修改之後已經實現。歡迎找茬,歡迎指教。 <body> <i
Android 自定義可以滑動和點選的RangeBar
由於專案的需要實現可以滑動和點選的效果,就在網上搜了一下,發現基本上都是可以滑動的,於是自己就在別人的基礎上進行了一系列的修改。做成的效果圖如下 其實要想實現上面的效果並不是很難,只需要懂一些自定
Android定位&地圖&導航——基於百度地圖,實現自定義圖示繪製並點選時彈出泡泡
public class MainActivity extends Activity { private EditText txtAddr; // 定位相關 LocationClient mLocClient; LocationData locData = nul
自定義按鈕捕獲tabbarItem點選事件
用的是現在最多見的tabbar+navigitioncontroller框架,需要做到的在tabbar的某一個controller裡自定義一個按鈕,點選之後的效果如同點選了tabbar上的某一個item。實現的時候如果用push這個方法會造成頁面跳轉的情況,工程的業務邏輯就
WebView自定義瀏覽器之在點選連結後不使用其他瀏覽器開啟
只需要新增一下程式碼即可 webview.setWebViewClient(new WebViewClient() { //重寫shouldOverrideUrlLoading方法,使點選連結後
HTML手機端自定義dom實現按鈕點選效果
之前寫手機頁面時,感覺自帶button的陰影不好看,去掉之後又沒有了點選時的互動效果,使用者體驗很不好。bootstrap的按鈕顏色風格又太少了,還是自己寫才是王道。後來各種百度查到了如下方法,很簡單實用,特地記錄一下。主要是利用ontouchstart和ontouchend
iOS 一一 自定義cell按鈕的點選事件(通知機制)
使用通知機制來實現 自定義cell按鈕的點選事件.使用通知機制來實現,沒有使用代理的方式規範. 1. 當點選cell上面的按鈕. 釋出通知 2. 在控制器的viewDidLoad方法中監聽通知.實現監聽通知的方法 3. 移除通知 程式碼如下: ZYOperatio
sublime3使用:自定義快捷鍵、外掛安裝、語法校驗(css和js)
1.快捷鍵大全: https://mp.csdn.net/postedit/84336764 2.新增快捷鍵: 例:ctrl+q 開啟sublime編輯器 preference>>key bindings-user>>編輯設定文件, 輸入 { "key