使用scrollview显示edittext keyboard

时间:2017-06-07 14:52:22

标签: android uiscrollview

我有一个布局,其中我有一个图像,textview,编辑框和一个按钮,所以每当键盘打开时,我希望我的屏幕向下滚动到按钮,以便用户可以随时键入并按下提交按钮。我通过使用scrollview做了这个,但我删除滚动视图做了一些更改,现在当我再次使用scrollview它不起作用。 这是代码,请检查。

layout_file:

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

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

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context="myapp.anis.hotel.MainActivity"
android:background="@drawable/backgroundhotel"
android:fitsSystemWindows="true">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/scroll">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
    android:text="Please share your feedback"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView6"
    android:textAppearance="@style/TextAppearance.AppCompat.Large"
    android:textColor="@android:color/background_dark"
    android:fontFamily="serif"
    android:layout_below="@+id/imageView"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="15dp" />

<TextView
    android:text="@string/textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/thanks"
    android:shadowColor="@android:color/background_light"
    android:textAppearance="@style/TextAppearance.AppCompat.Large"
    android:textColorHighlight="@android:color/background_dark"
    android:textColor="@android:color/background_dark"
    android:fontFamily="serif"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="15dp" />

<ImageView
    android:layout_width="wrap_content"
    app:srcCompat="@drawable/hotellogo"
    android:id="@+id/imageView"

    android:layout_height="150dp"
    android:layout_marginTop="15dp"
    android:layout_below="@+id/thanks"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<EditText
    android:layout_width="match_parent"
    android:ems="10"
    android:maxLines="50"
    android:background="@android:drawable/editbox_background"
    android:layout_marginTop="15dp"
    android:id="@+id/feedback"
    android:hint="Enter FeedBack"
    android:inputType="textMultiLine"
    android:gravity="left"
    android:textColorHint="@android:color/background_dark"
    android:textColor="@android:color/background_dark"
    android:textColorHighlight="@android:color/background_dark"
    android:layout_below="@+id/textView6"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_height="180dp" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/submitting1"
        android:background="@android:color/transparent"
        android:onClick="onSubmit"
        android:id="@+id/submit"
        android:layout_below="@id/feedback"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="20dp"
        android:layout_centerHorizontal="true"
        />
</RelativeLayout>
</ScrollView>
    </RelativeLayout>

在我的主要活动中,我使用scrollto方法转到我的图片按钮。

public class MainActivity extends AppCompatActivity {


ImageButton submit;
EditText feedBack;
static public String saveFeedBack="";
ScrollView view;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    submit = (ImageButton) findViewById(R.id.submit);
    feedBack = (EditText) findViewById(R.id.feedback);
    view = (ScrollView) findViewById(R.id.scroll);
    view.scrollTo(submit.getScrollX(),submit.getScrollY());
    }

public void onSubmit(View view){

    saveFeedBack = feedBack.getText().toString();
    if(saveFeedBack.length() >=4) {
        Intent intent = new Intent(this, Main3Activity.class);
        startActivity(intent);
    }
    else{
        Toast.makeText(getApplicationContext(),"Enter valid Feedback please.",Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onRestart() {
    super.onRestart();
    feedBack.setText("");
    feedBack.setHint("Enter Feedback");
}

}

但是当我运行我的应用程序时,scrollview会滚动到我的编辑文本而不是我的按钮。我尝试过adjustResize,adjustPan和所有这些东西,但都没有。

1 个答案:

答案 0 :(得分:0)

经过大量研究后我已经解决了你的问题。实际上,当你使用滚动到onCreate里面的任何位置它都不起作用,因为需要一个小的延迟来膨胀视图。

请在onCreate中使用以下代码:

view.postDelayed(new Runnable() {
            @Override
            public void run() {
                view.fullScroll(ScrollView.FOCUS_DOWN);
            }
        },200);

希望它能帮助!!!