㈠ android 鍵盤將布局頂上去
效果圖:
布局文件:
添加 android:fitsSystemWindows="true"
注冊清單:
整個布局都頂上去
AndroidManifest.xml 添加 android:windowSoftInputMode="adjustResize|stateHidden"
只把輸入框頂上去
AndroidManifest.xml 添加 android:windowSoftInputMode="stateHidden|adjustPan"
㈡ Android 點擊輸入框彈出鍵盤,布局隨鍵盤往上移動
一、效果圖:
二、Code:
/**
* 1、獲取main在窗體的可視區域
* 2、獲取main在窗體的不可視區域高度
* 3、判斷不可視區域高度,之前根據經驗值,在有些手機上有點不大准,現改成屏幕整體高度的1/3
* 1、大於屏幕整體高度的1/3:鍵盤顯示 獲取Scroll的窗體坐標
* 算出main需要滾動的高度,使scroll顯示。
* 2、小於屏幕整體高度的1/3:鍵盤隱藏
*
* @param main 根布局
* @param scroll 需要顯示的最下方View
*/
public static void addLayoutListener(final View main, final View scroll) {
main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
main.getWindowVisibleDisplayFrame(rect);
int screenHeight = main.getRootView().getHeight();
int mainInvisibleHeight = main.getRootView().getHeight() - rect.bottom;
if (mainInvisibleHeight > screenHeight / 4) {
int[] location = new int[2];
scroll.getLocationInWindow(location);
int srollHeight = (location[1] + scroll.getHeight()) - rect.bottom;
main.scrollTo(0, srollHeight);
} else {
main.scrollTo(0, 0);
}
}
});
}
三、調用方式:
在Activity的onCreate()中調用,
僅此記錄。
㈢ android布局問題我想實現圖上的效果,是一個按鈕+一個輸入框求大神指導
這個問題很簡單!1.最外面使用一個linearLayout背景設置為那個橘黃色的圖片。
2.你那個按鈕也可以採用背景圖片(imgeButton、或者textView什麼都可以)
3.輸入框採用EditText
㈣ 安卓布局 一個輸入框我想向讓他右移一點距離不貼著邊加 用的是linerlayout 怎麼弄
EditText布局屬性中設置:android:layout_marginLeft="20dp"
㈤ Android 輸入法對話框的布局
顯然不行 除非你自己寫 輸入法是一個應用 布局是他們自己寫的 只能是按照手機方向來顯示 查看原帖>>
㈥ Android WebView載入頁面的輸入框被軟鍵盤遮擋的問題
當實現沉浸式狀態欄時遇到軟體盤遮擋WebView頁面的輸入框的問題,這是實現方式有問題,應該檢查你的實現方式。
1)載入WebView的Activty不能設置為全屏模式,即Theme.NoTitleBar.Fullscreen,可以使用Theme.Holo.Light.NoActionBar
2)沉浸式狀態欄的實現方式,在Activity的根布局裡加兩個屬性:
android:clipToPadding="true" 設置你的繪制區域在padding裡面
android:fitsSystemWindows="true" 調整view的padding屬性為系統窗口 留出空間
在Activity的onCreate方法裡面設置標題欄為透明,即:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_ST ATUS);
3)Activity裡面不能設置android:windowSoftInputMode的屬性,使用默認的屬性即可
以上3步即可實現沉浸式狀態欄並且能保證你的WebView載入的HTML頁面的輸入框不被軟鍵盤遮擋。
頂
0
踩
0
上一篇 Android Studio在SVN上創建分支
下一篇 Android Converty問題解決方案
相關文章推薦
• android中webview載入html輸入框不能輸入內容問題記錄
• 如何解決Android軟鍵盤蓋住輸入框的問題
• Android 軟鍵盤蓋住輸入框的問題
• Android 軟鍵盤蓋住輸入框的問題
• Android 軟鍵盤蓋住輸入框的問題
• Android 軟鍵盤蓋住輸入框的問題
• Android 軟鍵盤蓋住輸入框的問題
• android popupwindow 中輸入框被軟鍵盤彈出擋住問題解決
• ios解決軟鍵盤遮擋輸入框問題
• Android軟鍵盤遮擋輸入框解決方法
參考知識庫
Android知識庫
34080 關注 | 2937 收錄
猜你在找
Android中的五大布局
零基礎學軟體之HTML語言
【Android APP開發】Android高級商業布局快速實現
html5的app開發
Android前沿技術—《軟體框架搭建》
Android移植基礎
html系統學習篇
零基礎學習HTML5—html+css基礎
Android開發之初窺門徑
Android之數據存儲
關閉
㈦ Android dialog 遮住輸入框的解決思路
在工作中經常會遇到彈出的dialog有輸入框的情況,屏幕大了還好,屏幕小了之後就特別容易出現輸入框被軟鍵盤遮住的情況,下面就是我在實際想中中遇到的
從上圖可以看出輸入框已經看不到了,遇到這種情況的第一個思路都是在dialog的style中添加
<item name="android:windowSoftInputMode">adjustPan</item>,我也試了下基本上沒用。然後換了個思路,既然軟鍵盤彈出來了,為什麼不能讓dialog向上移動同樣的距離呢。思路有了,下面就是把他實現了。
首先就是要計算軟鍵盤的高度,由於google並沒有給出具體的方法來計算軟鍵盤的高度,這時候我們就只能根據布局的高度變化來計算了。首先需要計算出屏幕的bottom坐標,然後監控布局的變動判斷變動後的bottom和初始的bottom的差值,一般肉眼觀察軟鍵盤的高度差不多是屏幕高度的1/3,所以就假設bottom往上移動了屏幕的1/3的距離就認為軟體盤彈出來了,當然也可以根據其他值來判斷,下面貼出具體方法:
/**
* activity中判斷軟鍵盤是否顯示
* @param activity
* */
fun isKeyboardShowing(activity: Activity): Boolean {
val screenHeight = activity.window!!.decorView.height.toDouble()
//獲取view的可見區域
val rect = Rect()
activity.window!!.decorView.getWindowVisibleDisplayFrame(rect)
return (2.0 /3.0) * screenHeight > rect.bottom.toDouble()
}
接下來我們來計算出軟體盤的高度,經過我在多個測試機上實驗發現初始時bottom就是屏幕的高度,下面是計算鍵盤高度的具體方法
/**
* activity中計算軟鍵盤的高度
* @param activity
* */
fun getKeyboardHeight(activity: Activity): Int {
val displayMetrics = DisplayMetrics()
activity.windowManager.defaultDisplay.getMetrics(displayMetrics)
val screenHeight = displayMetrics.heightPixels
val rect = Rect()
activity.window!!.decorView.getWindowVisibleDisplayFrame(rect)
return screenHeight - rect.bottom
}
有了高度之後一切就好辦了我們只需要在軟鍵盤彈出來的時候把dialog往上移動就行,在移動方式上我選擇了設置LayoutParams的方式,開始時想設置底部margin的,結果發現沒作用,dialog一點不移動,最後只好設置上邊的margin為負值
if (SoftUtils.isKeyboardShowing(context)) {
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin ==0) {
lp.topMargin = -SoftUtils.getKeyboardHeight(context)
if (mRootView.height
lp.height =mRootOriginHeight
}
mRootView.layoutParams = lp
}
}else {
if (mRootOriginHeight ==0) {
mRootOriginHeight =mRootView.height
}
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin <0) {
lp.topMargin =0
mRootView.layoutParams = lp
}
}
其中mRootView是dialog最外層的布局。在這裡面比較重要的一點監測方式,在哪裡監測軟鍵盤的彈出動作,在activity中可以監測onWindowFocusChanged方法,但是如果封裝了dialog的話,dialog中的onWindowFocusChanged並不會起作用,在這里我選擇了使用ViewTreeObserver和監聽,通過給mRootView的ViewTreeObserver添加addOnGlobalLayoutListener來實時判斷,下面是完整的方法
private fun setSpace() {
val treeObserver =mRootView.viewTreeObserver
treeObserver.addOnGlobalLayoutListener{
if (SoftUtils.isKeyboardShowing(context)) {
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin ==0) {
lp.topMargin = -SoftUtils.getKeyboardHeight(context)
if (mRootView.height
lp.height =mRootOriginHeight
}
mRootView.layoutParams = lp
}
}else {
if (mRootOriginHeight ==0) {
mRootOriginHeight =mRootView.height
}
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin <0) {
lp.topMargin =0
mRootView.layoutParams = lp
}
}
}
}
在這里當軟鍵盤彈出的時候重新設置了下dialog的高度,因為有時候軟鍵盤的彈出會使dialog的高度壓縮,所以彈出的時候重新設置下就好了。
這就是我的一個解決思路,當然完全按這個寫的話當輸入框較多時也可能出問題,最上層的輸入框跑屏幕之外去了,這種情況下我們只需要根據輸入框的位置動態的計算dialog需要往上移動的距離就行,不要一直設置為計算出來的軟鍵盤的高度。
下圖是解決之後的UI
㈧ 安卓給輸入框設置默認值
通過WebView顯示一個網頁,並給輸入框設置默認值。
在有EditText的布局中,可以對固定文本設置默認聚焦,這樣實現默認情況下輸入框不聚焦,此外,若要實現點擊輸入框外部關閉軟鍵盤並且讓輸入框失去焦點,則可重寫dispatchTouchEvent方法,捕捉到輸入框獲取到焦點後再進行相應操作。
安卓系統默認參數的修改通常在新項目開始之初,咱們須要針對客戶需求進行各類系統默認屬性的配置,一般這些屬性都是經過build.prop、settings.db、default.xml、一些功能package下的config.xml等來進行初始化配置的。
㈨ android 系統輸入法如何可以使上面帶有朋友圈一樣的輸入框
這個簡單,你在界面用ScrollView布局,
裡面用一個RelativeLayout鋪滿父窗口,RelativeLayout用布局,居下,這樣,當獲取焦點的時候,就會自動上去了,
還需要在manifest文件中,對activity設置android:windowSoftInputMode="stateHidden|adjustResize"