1.先看一下实现效果

a.软键盘弹出前的整体布局

b.软键盘弹出后的布局

如图所示,软键盘弹出后,页面布局整体上移,避免了软键盘覆盖提交按钮或者是EditText控件。

2.实现方式

a.页面布局

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/rl_title"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/scroll_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_below="@id/rl_title"

android:focusable="true"

android:focusableInTouchMode="true">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

android:id="@+id/rl_content"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/edit_text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@null"

android:gravity="top"

android:maxLength="100" />

android:id="@+id/btn_submit_order"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true"

android:gravity="center"

android:text="提交" />

b.activity中的代码

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

final ScrollView scrollView = findViewById(R.id.scroll_view);

findViewById(R.id.edit_text).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

scrollToShowSubmitBtn(scrollView);

}

});

findViewById(R.id.edit_text).setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View view, MotionEvent motionEvent) {

scrollToShowSubmitBtn(scrollView);

return false;

}

});

}

/**

* 使滚动条滚动至指定位置(垂直滚动)

*

* @param scrollView 要滚动的ScrollView

* @param to 滚动到的位置

*/

protected void scrollVertical(final ScrollView scrollView, final int to) {

scrollView.postDelayed(new Runnable() {

@Override

public void run() {

scrollView.scrollTo(0, to);

}

},100);

}

/**

* 使ScrollView滚动至底部,显示Submit按钮

*

* @param scrollView 要滚动的scrollView

*/

protected void scrollToShowSubmitBtn(final ScrollView scrollView) {

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

scrollView.postDelayed(new Runnable() {

@Override

public void run() {

scrollVertical(scrollView, scrollView.getHeight());

}

}, 100);

}

}

ps:篇幅有限,仅给出关键代码。其中,布局文件中的ScrollView和activity中的scrollVertical(final ScrollView scrollView, final int to)、scrollToShowSubmitBtn(final ScrollView scrollView)两个方法是重点。

参考博客:http://blog.csdn.net/sinat_31311947/article/details/53899166

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐