单击"编辑文本"时布局向上移动不够



EditText中单击时,视图确实向上移动。但它的上升还不够。它应该向上移动到 someId ,低于someId应显示按钮,低于该按钮应显示keyboard。为什么这不起作用?

安卓清单:

<activity android:name=".MainActivity" android:windowSoftInputMode="adjustResize">

activity_main:

<?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">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:background="@android:color/holo_red_dark" />
            <EditText
                android:layout_width="match_parent"
                android:layout_height="132dp"
                android:padding="8dp"
                android:background="@android:color/holo_green_dark"/>
            <View
                android:id="@+id/someId"
                android:layout_width="match_parent"
                android:layout_height="20dp" />
        </LinearLayout>
    </ScrollView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_send"
            style="@style/Widget.AppCompat.Button.Borderless"
            android:layout_width="0dp"
            android:layout_height="?attr/actionBarSize"
            android:layout_weight="1"
            android:background="@android:color/white"
            android:clickable="false"
            android:text="Test"
            android:textColor="@color/defaultGreen"
            android:textSize="18sp" />
    </LinearLayout>
</RelativeLayout>

如何滚动到视图的底部已更改

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  final EditText editText = (EditText) findViewById(R.id.editText);
  final ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView);
  editText.getRootView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
      //Scroll to bottom of view
      scrollView.smoothScrollTo(0, editText.getBottom());
    }
  });
}

最新更新