当编辑文本请求焦点和软键盘打开时,我需要将scrollView滚动到底部。 这是我的xml代码:
<ScrollView
android:id="@+id/transfer_scroller"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue_500"
android:fillViewport="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.CardView
android:id="@+id/cv_transfer_senderLayout"
style="@style/CardViewStyle.Transaction">
<LinearLayout
android:id="@+id/ll_selectRec"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/cv_transfer_receiverLayout"
android:visibility="gone"
android:layout_below="@id/cv_transfer_senderLayout"
style="@style/CardViewStyle.Transaction">
<LinearLayout
android:id="@+id/transfer_layout_ll_receivers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/cv_transfer_setAmount"
android:visibility="gone"
android:layout_below="@id/cv_transfer_receiverLayout"
style="@style/CardViewStyle.Transaction">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<EditText
android:id="@+id/transfer_layout_et_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:digits="0123456789"
android:hint="@string/hint_ed_ll_money"
android:inputType="phone"
android:gravity="center"
android:maxLength="7"
android:singleLine="true"
android:textColor="@color/gray_400"
android:textSize="@dimen/font_summ" >
</EditText>
</LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
</ScrollView>
这是我如何尝试滚动到底部:
private void scrollDown(){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mScrollView.scrollTo(0, mScrollView.getBottom());
Log.v("55555", "scrollDown");
}
}, 50);
}
mEditAmount.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
scrollDown();
}
});
但这并没有帮助。键盘打开并覆盖其余布局... 任何想法?
答案 0 :(得分:0)
我不确定您的问题是什么,是滚动视图无法到达底部还是您不希望软键盘覆盖您的滚动视图?
对于第一个问题,您可以在处理程序中尝试:
mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
或者您可以像这样更改代码:
if (scroll == null || inner == null) {
return;
}
int offset = inner.getMeasuredHeight() - scroll.getHeight();
if (offset < 0) {
offset = 0;
}
scroll.scrollTo(0, offset);
如果您不想使用覆盖布局的软键盘,可以试试这些方法。
第一种方式:在OnCreate()中,在“setContentView”之前编写代码:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
第二种方式:在AndroidManifest.xml的“活动”中写下这个:
android:windowSoftInputMode="adjustPan"