中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android UI開發中所遇到的各種坑

發布時間:2020-10-12 05:58:03 來源:腳本之家 閱讀:121 作者:pigdreams 欄目:移動開發

1.軟鍵盤隱藏問題

  • 問題描述:Activity按下返回調用finish()方法后,界面已經銷毀,但是軟鍵盤依然還留在屏幕上,這讓當前正在顯示的Activity沒有輸入框的完全沒法看,非常嚴重的視覺影響。
  • 嘗試方案:尋找各種方法去隱藏軟鍵盤,網上各種找。思路是在活動退出時,會調用onDestroy方法銷毀界面,在這個方法里面想辦法隱藏界面即可。找到下面這種方法,但還是不行。還嘗試過用基類找到所有edittext然后讓它們失去焦點,隱藏軟鍵盤。
InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
im.hideSoftInputFromWindow(getCurrentFocus().getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
  • 解決方案:一開始在onDestroy()里調隱藏軟鍵盤的思路就是錯的,因為onDestroy()之前還有兩個生命周期方法,像上述隱藏軟鍵盤的方法有個getCurrentFocus(),在onDestroy()之前肯定得不到正確的獲取當前焦點的那個控件了。所以在onPasue()方法里隱藏軟鍵盤就有效,在onDestroy()方法里不管用任何方法都是無效的。
  • 注意點:用這個隱藏軟鍵盤的方法,最好做為空判斷,否則有可能會出現空指針的異常,如當前界面沒有控件獲取焦點時,則getCurrentFocus()這個方法得到的是一個null.
InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
if(getCurrentFocus!=null)
im.hideSoftInputFromWindow(getCurrentFocus().getApplicationWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
  • 軟鍵盤占用布局問題,軟鍵盤有時會把一些控件覆蓋掉,這時如何把整個界面向上頂起,讓任何控件都不會被覆蓋呢?有兩步,第一在activity里設置一個屬性,如下。第二步,布局里加一個scrollview將你要被頂起的視圖放進這里,然后當軟鍵盤顯示的時候,就會在scrollview里滾動以獲得空間進行顯示軟鍵盤。

<activity Android:windowSoftInputMode="adjustResize">

2.merge標簽注意點

  • merge標簽只有在根布局是FrameLayout時才有用,因為安卓所有界面的根布局都是FrameLayout,所以可以用merge標簽進行融合。
  • merge標簽使用后,布局里即使有EditText也無法自動獲得焦點,只能手動設置焦點, 調用requestFocus()方法。或者是用requestFocus》在XML布局文件里。
  • 使用后要注意如果在根布局中,則不能用LayoutInflater來生成一個view,否則會報如下錯誤,由于我在listview的getview()里用了這個帶有merge的布局,所以崩潰了。補充一點,inflater()方法里可以設置attach root為true則可以解析出來,不會出現崩潰。
 android.view.InflateException: Binary XML file line 
 #2: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
   Caused by: android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true

3.LinearLayout注意點

  • 線性布局默認是水平的,要善用weight權重這個屬性。
  • 非常重要的點,如果方向設為水平,則layout_gravity的top與bottom標簽是沒有效果的。如果方向設為垂直,則left與right是沒有效果的,這時如果想放在靠右的地方,則可以使用space標簽,將寬度設為0dp,將layoutweight設為1放在控件前邊即可。

4. 布局選擇

FrameLayout是最簡單的一種布局,所有安卓界面的根布局都是FrameLayout,加載速度最快。

LinearLayou布局與RelativeLayout布局的加載速度需要進一步深入的研究才能得出具體結論。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江口县| 鲜城| 纳雍县| 吉林市| 乌拉特中旗| 临潭县| 桓台县| 葵青区| 泰安市| 嘉峪关市| 沂南县| 连平县| 保定市| 双峰县| 二连浩特市| 资兴市| 普兰县| 昭苏县| 正镶白旗| 鄂托克前旗| 晋江市| 广元市| 崇州市| 绥宁县| 宁乡县| 浦城县| 顺义区| 海口市| 卫辉市| 隆化县| 威远县| 玉龙| 个旧市| 明光市| 法库县| 河西区| 武鸣县| 霍城县| 克东县| 孝感市| 康马县|