【Android】解決軟鍵盤遮擋登陸按鈕

在應用登陸頁面我們需要填寫用戶名和密碼。當填寫這些信息的時候,軟鍵盤會遮擋登陸按鈕,這使得用戶體驗較差,所以今天就來解決這個問題

1:登陸佈局界面如下


  1. <?xmlversion="1.0"encoding="utf-8"?>

  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

  3. android:layout_width="match_parent"

  4. android:layout_height="match_parent"

  5. android:background="@drawable/login_bg">

  6. <LinearLayout

  7. android:id="@+id/ll_center"

  8. android:layout_width="fill_parent"

  9. android:layout_height="wrap_content"

  10. android:orientation="vertical">

  11. <ScrollView

  12. android:id="@+id/sl_center"

  13. android:layout_width="fill_parent"

  14. android:layout_height="0dp"

  15. android:layout_weight="1"

  16. android:fadingEdge="none"

  17. android:scrollbars="none">

  18. <RelativeLayout

  19. android:id="@+id/rl_center"

  20. android:layout_width="fill_parent"

  21. android:layout_height="wrap_content">

  22. <LinearLayout

  23. android:id="@+id/sms_login_ll_title"

  24. android:layout_width="wrap_content"

  25. android:layout_height="wrap_content"

  26. android:layout_centerHorizontal="true"

  27. android:layout_marginTop="90dip"

  28. android:orientation="horizontal">

  29. <ImageView

  30. android:id="@+id/sms_login_iv_icon"

  31. android:layout_width="70dip"

  32. android:layout_height="70dip"

  33. android:layout_gravity="center_vertical"

  34. android:src="@drawable/login_top_icon"/>

  35. <ImageView

  36. android:id="@+id/sms_login_iv_big_text"

  37. android:layout_width="wrap_content"

  38. android:layout_height="wrap_content"

  39. android:layout_gravity="center_vertical"

  40. android:layout_marginLeft="15dip"

  41. android:src="@drawable/sms_login_icon_big"/>

  42. </LinearLayout>

  43. <ImageView

  44. android:id="@+id/sms_login_iv_name"

  45. android:layout_width="wrap_content"

  46. android:layout_height="wrap_content"

  47. android:layout_below="@id/sms_login_ll_title"

  48. android:layout_centerHorizontal="true"

  49. android:layout_marginTop="28dip"

  50. android:background="@drawable/sms_login_icon_small"/>

  51. <RelativeLayout

  52. android:id="@+id/sms_login_rl_input_name"

  53. android:layout_width="fill_parent"

  54. android:layout_height="43dip"

  55. android:layout_below="@id/sms_login_iv_name"

  56. android:layout_centerHorizontal="true"

  57. android:layout_marginLeft="40dip"

  58. android:layout_marginRight="40dip"

  59. android:layout_marginTop="40dip"

  60. android:background="@drawable/login_top_input">

  61. <ImageView

  62. android:id="@+id/sms_login_iv_input_name_icon"

  63. android:layout_width="wrap_content"

  64. android:layout_height="wrap_content"

  65. android:layout_alignParentLeft="true"

  66. android:layout_centerVertical="true"

  67. android:layout_marginLeft="10dip"

  68. android:layout_marginRight="10dip"

  69. android:background="@drawable/login_input_icon_user"/>

  70. <FrameLayout

  71. android:layout_width="fill_parent"

  72. android:layout_height="wrap_content"

  73. android:layout_centerVertical="true"

  74. android:layout_toRightOf="@id/sms_login_iv_input_name_icon">

  75. <EditText

  76. android:id="@+id/sms_login_et_accout"

  77. android:layout_width="fill_parent"

  78. android:layout_height="wrap_content"

  79. android:background="@drawable/transparent_white"

  80. android:digits="@string/sms_login_accout_text"

  81. android:hint="請輸入賬號"

  82. android:singleLine="true"

  83. android:text=""

  84. android:textSize="20sp"/>

  85. </FrameLayout>

  86. </RelativeLayout>

  87. <RelativeLayout

  88. android:id="@+id/sms_login_rl_input_pass"

  89. android:layout_width="fill_parent"

  90. android:layout_height="43dip"

  91. android:layout_below="@id/sms_login_rl_input_name"

  92. android:layout_centerHorizontal="true"

  93. android:layout_marginLeft="40dip"

  94. android:layout_marginRight="40dip"

  95. android:background="@drawable/login_top_input">

  96. <ImageView

  97. android:id="@+id/sms_login_iv_input_pass_icon"

  98. android:layout_width="wrap_content"

  99. android:layout_height="wrap_content"

  100. android:layout_alignParentLeft="true"

  101. android:layout_centerVertical="true"

  102. android:layout_marginLeft="10dip"

  103. android:layout_marginRight="10dip"

  104. android:background="@drawable/login_input_icon_pwd"/>

  105. <FrameLayout

  106. android:layout_width="fill_parent"

  107. android:layout_height="wrap_content"

  108. android:layout_centerVertical="true"

  109. android:layout_toRightOf="@id/sms_login_iv_input_pass_icon">

  110. <EditText

  111. android:id="@+id/sms_login_et_password"

  112. android:layout_width="fill_parent"

  113. android:layout_height="wrap_content"

  114. android:background="@drawable/transparent_white"

  115. android:digits="@string/sms_et_change_password_old_text"

  116. android:hint="請輸入密碼"

  117. android:inputType="textPassword"

  118. android:singleLine="true"

  119. android:text=""

  120. android:textSize="20sp"/>

  121. </FrameLayout>

  122. </RelativeLayout>

  123. </RelativeLayout>

  124. </ScrollView>

  125. <Button

  126. android:id="@+id/sms_login_bt_confirm"

  127. android:layout_width="fill_parent"

  128. android:layout_height="wrap_content"

  129. android:layout_below="@id/sms_login_rl_input_pass"

  130. android:layout_centerHorizontal="true"

  131. android:layout_marginLeft="40dip"

  132. android:layout_marginRight="40dip"

  133. android:layout_marginTop="16dip"

  134. android:background="@drawable/sms_update_pass_bg_selector"

  135. android:text="登 錄"

  136. android:textColor="@color/white"

  137. android:textSize="20sp"/>

  138. </LinearLayout>

  139. </RelativeLayout>


需要注意的是:


1:層級關係

RelativeLayout-----

   LinearLayout----

    ScrollView,  

    Button

2:在AndroidManifest.xml中的該activity配置  android:windowSoftInputMode="stateHidden|adjustResize"

3:看如下代碼


  1. etAccount = (EditText) this.findViewById(R.id.sms_login_et_accout);  

  2.        etAccount.setOnClickListener(this);  

  3.        etAccount.setOnTouchListener(new OnTouchListener() {  

  4. @Override

  5. publicboolean onTouch(View v, MotionEvent event) {  

  6.                changeScrollView();  

  7. returnfalse;  

  8.            }  

  9.        });  

  10. /**

  11.     * 使ScrollView指向底部

  12.     */

  13. privatevoid changeScrollView(){  

  14.        h.postDelayed(new Runnable() {  

  15. @Override

  16. publicvoid run() {  

  17.                sl_center.scrollTo(0, sl_center.getHeight());  

  18.            }  

  19.        }, 300);  

  20.    }  

  21.    Handler h = new Handler(){  

  22. publicvoid handleMessage(Message msg) {  

  23.        };  

  24.    };  


4:具體問題具體分析,方法有多種,歡迎大家討論。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章