首页 > Java > java教程 > Android开发软键盘遮挡登陆按钮的完美解决方案

Android开发软键盘遮挡登陆按钮的完美解决方案

高洛峰
发布: 2017-01-07 11:39:36
原创
1573 人浏览过

在应用登陆页面我们需要填写用户名和密码。当填写这些信息的时候,软键盘会遮挡登陆按钮,这使得用户体验较差,所以今天就来解决这个问题

1:登陆布局界面如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/login_bg" >

<LinearLayout

android:id="@+id/ll_center"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical" >

<ScrollView

android:id="@+id/sl_center"

android:layout_width="fill_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:fadingEdge="none"

android:scrollbars="none" >

<RelativeLayout

android:id="@+id/rl_center"

android:layout_width="fill_parent"

android:layout_height="wrap_content" >

<LinearLayout

android:id="@+id/sms_login_ll_title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_marginTop="90dip"

android:orientation="horizontal" >

<ImageView

android:id="@+id/sms_login_iv_icon"

android:layout_width="70dip"

android:layout_height="70dip"

android:layout_gravity="center_vertical"

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

<ImageView

android:id="@+id/sms_login_iv_big_text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:layout_marginLeft="15dip"

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

</LinearLayout>

<ImageView

android:id="@+id/sms_login_iv_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/sms_login_ll_title"

android:layout_centerHorizontal="true"

android:layout_marginTop="28dip"

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

<RelativeLayout

android:id="@+id/sms_login_rl_input_name"

android:layout_width="fill_parent"

android:layout_height="43dip"

android:layout_below="@id/sms_login_iv_name"

android:layout_centerHorizontal="true"

android:layout_marginLeft="40dip"

android:layout_marginRight="40dip"

android:layout_marginTop="40dip"

android:background="@drawable/login_top_input" >

<ImageView

android:id="@+id/sms_login_iv_input_name_icon"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_centerVertical="true"

android:layout_marginLeft="10dip"

android:layout_marginRight="10dip"

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

<FrameLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_toRightOf="@id/sms_login_iv_input_name_icon" >

<EditText

android:id="@+id/sms_login_et_accout"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="@drawable/transparent_white"

android:digits="@string/sms_login_accout_text"

android:hint="请输入账号"

android:singleLine="true"

android:text=""

android:textSize="20sp" />

</FrameLayout>

</RelativeLayout>

<RelativeLayout

android:id="@+id/sms_login_rl_input_pass"

android:layout_width="fill_parent"

android:layout_height="43dip"

android:layout_below="@id/sms_login_rl_input_name"

android:layout_centerHorizontal="true"

android:layout_marginLeft="40dip"

android:layout_marginRight="40dip"

android:background="@drawable/login_top_input" >

<ImageView

android:id="@+id/sms_login_iv_input_pass_icon"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_centerVertical="true"

android:layout_marginLeft="10dip"

android:layout_marginRight="10dip"

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

<FrameLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_toRightOf="@id/sms_login_iv_input_pass_icon" >

<EditText

android:id="@+id/sms_login_et_password"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="@drawable/transparent_white"

android:digits="@string/sms_et_change_password_old_text"

android:hint="请输入密码"

android:inputType="textPassword"

android:singleLine="true"

android:text=""

android:textSize="20sp" />

</FrameLayout>

</RelativeLayout>

</RelativeLayout>

</ScrollView>

<Button

android:id="@+id/sms_login_bt_confirm"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/sms_login_rl_input_pass"

android:layout_centerHorizontal="true"

android:layout_marginLeft="40dip"

android:layout_marginRight="40dip"

android:layout_marginTop="16dip"

android:background="@drawable/sms_update_pass_bg_selector"

android:text="登 录"

android:textColor="@color/white"

android:textSize="20sp" />

</LinearLayout>

</RelativeLayout>

登录后复制

需要注意的是:

1:层级关系

RelativeLayout-----

LinearLayout----

ScrollView,

Button

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

3:看如下代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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

etAccount.setOnClickListener(this);

etAccount.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

changeScrollView();

return false;

}

});

/**

* 使ScrollView指向底部

*/

private void changeScrollView(){

h.postDelayed(new Runnable() {

@Override

public void run() {

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

}

}, 300);

}

Handler h = new Handler(){

public void handleMessage(Message msg) {

};

};

登录后复制

以上所述是小编给大家介绍的Android开发软键盘遮挡登陆按钮的完美解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHP中文网的支持!

更多Android开发软键盘遮挡登陆按钮的完美解决方案相关文章请关注PHP中文网!


相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板