Stop edittext gaining focus with scroll view in activity

There are many questions and answers about how to stop an edittext gaining focus on activity startup.

However, all of the solutions do work for me and the edittext doesn't gain focus at start up, but this stops the scroll view from scrolling.

I tried almost all of the solutions in the post: Stop EditText from gaining focus at Activity startup and it doesn't work with scroll view in the activity.

This is causing me much trouble. Any help would be great.

Thanks

Tried the following:

  • Dummy item to prevent AutoCompleteTextView from receiving focus
  • Set attributes of edit text: Set the attributes android:focusable="true" and android:focusableInTouchMode="true"
  • Here is my xml:

    <?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/content_home"
    
    
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
    
        tools:showIn="@layout/activity_home">
    
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:fitsSystemWindows="false">
    
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
    
                <ProgressBar
                    android:id="@+id/progressBar"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:layout_centerInParent="true"
                    android:visibility="gone" />
    
    
                <TextView
                    android:id="@+id/textViewLinkToOrder"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="20dp"
                    android:layout_marginTop="20dp"
                    android:gravity="center"
                    android:text="Click here to book travel insurance."
                    android:textColor="@color/colorPrimary"
                    android:textSize="24sp"
    
                    />
    
                <LinearLayout
                    android:id="@+id/buttons_linear_layout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/textViewLinkToOrder"
                    android:orientation="horizontal">
    
                    <Button
                        android:id="@+id/choose_country_button"
                        android:layout_width="200dp"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/textViewLinkToOrder"
                        android:layout_centerHorizontal="true"
                        android:layout_marginLeft="5dp"
                        android:layout_marginRight="5dp"
                        android:layout_weight="1"
                        android:background="@color/colorPrimary"
                        android:onClick="onChooseCountryButtonClick"
                        android:text="Choose country"
                        android:textColor="#ffff" />
    
    
                    <Button
                        android:id="@+id/automatic_country_button"
                        android:layout_width="200dp"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/choose_country_button"
                        android:layout_centerHorizontal="true"
                        android:layout_marginLeft="5dp"
                        android:layout_marginRight="5dp"
                        android:layout_weight="1"
                        android:background="@color/colorPrimary"
                        android:text="My Location"
                        android:textColor="#fff" />
    
    
                </LinearLayout>
    
    
                <LinearLayout
                    android:id="@+id/linearLayoutAllDetails"
                    android:layout_width="match_parent"
    
                    android:layout_height="wrap_content"
                    android:layout_below="@id/buttons_linear_layout"
                    android:orientation="vertical">
    
                    <TextView
                        android:id="@+id/textView_coumtry_name"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:padding="5dp"
                        android:text="No country yet selected"
                        android:textColor="#000000"
                        android:textSize="30sp"
                        android:textStyle="bold" />
    
                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="#e8e8e8"
                        android:padding="10dp">
    
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:orientation="horizontal">
    
    
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:orientation="horizontal">
    
                                <EditText
                                    android:id="@+id/editTextFromCurrency"
                                    android:layout_width="80sp"
                                    android:layout_height="50sp"
    
                                    android:background="@drawable/edit_txt_bg"
                                    android:ems="10"
                                    android:inputType="number"
                                    android:text="1" />
    
                                <TextView
                                    android:id="@+id/textViewFromCurrency"
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent"
                                    android:layout_marginLeft="10dp"
                                    android:layout_marginStart="10dp"
                                    android:gravity="center"
                                    android:text="None"
                                    android:textColor="#000000"
                                    android:textSize="17sp" />
    
                            </LinearLayout>
    
                            <LinearLayout
                                android:layout_width="0dp"
                                android:layout_height="wrap_content"
                                android:layout_weight="1"
                                android:orientation="horizontal">
    
                                <EditText
                                    android:id="@+id/editTextToCurrency"
                                    android:layout_width="80sp"
                                    android:layout_height="50sp"
                                    android:background="@drawable/edit_txt_bg"
    
                                    android:ems="10"
                                    android:inputType="number"
                                    android:text="1" />
    
                                <TextView
                                    android:id="@+id/textViewToCurrency"
                                    android:layout_width="wrap_content"
                                    android:layout_height="match_parent"
                                    android:layout_marginLeft="10dp"
                                    android:layout_marginStart="10dp"
                                    android:gravity="center"
                                    android:text="New Israeli Shekel"
                                    android:textColor="#000000"
                                    android:textSize="17sp" />
                            </LinearLayout>
                        </LinearLayout>
                    </RelativeLayout>
    
    
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:orientation="horizontal"
                        android:paddingBottom="20dp"
                        android:paddingLeft="10dp"
                        android:paddingRight="10dp"
                        android:paddingTop="20dp">
    
                        <ImageView
                            android:layout_width="40dp"
                            android:layout_height="40dp"
                            android:src="@drawable/police" />
    
                        <TextView
                            android:id="@+id/textView"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"
                            android:layout_marginLeft="10dp"
                            android:layout_marginRight="10dp"
                            android:text="Police"
                            android:textColor="#000000"
                            android:textSize="17sp" />
    
                        <TextView
                            android:id="@+id/police_text_view"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"
                            android:layout_marginLeft="10dp"
                            android:layout_marginRight="10dp"
                            android:text=""
                            android:textColor="#000000"
                            android:textSize="17sp" />
    
                        <View
                            android:layout_width="0dp"
                            android:layout_height="0dp"
                            android:layout_weight="1" />
    
                        <ImageView
                            android:id="@+id/police_phone_button"
                            android:layout_width="30dp"
                            android:layout_height="30dp"
                            android:layout_gravity="center_vertical"
                            android:src="@android:drawable/sym_action_call" />
    
                    </LinearLayout>
    
    
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:paddingBottom="20dp"
                        android:paddingLeft="10dp"
                        android:paddingRight="10dp"
                        android:paddingTop="20dp">
    
                        <ImageView
                            android:layout_width="40dp"
                            android:layout_height="40dp"
                            android:src="@drawable/ambulance" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"
                            android:layout_marginLeft="10dp"
                            android:layout_marginRight="10dp"
                            android:text="Ambulance"
                            android:textColor="#000000"
                            android:textSize="17sp" />
    
                        <TextView
                            android:id="@+id/ambulance_text_view"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"
                            android:layout_marginLeft="10dp"
                            android:layout_marginRight="10dp"
                            android:text=""
                            android:textColor="#000000"
                            android:textSize="17sp" />
    
                        <View
                            android:layout_width="0dp"
                            android:layout_height="0dp"
                            android:layout_weight="1" />
    
                        <ImageView
                            android:id="@+id/ambulance_phone_button"
                            android:layout_width="30dp"
                            android:layout_height="30dp"
                            android:layout_gravity="center_vertical"
                            android:src="@android:drawable/sym_action_call" />
    
                    </LinearLayout>
    
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:paddingBottom="20dp"
                        android:paddingLeft="10dp"
                        android:paddingRight="10dp"
                        android:paddingTop="20dp">
    
                        <ImageView
                            android:layout_width="40dp"
                            android:layout_height="40dp"
                            android:src="@drawable/israel_consulate" />
    
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:orientation="vertical">
    
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_gravity="center_vertical"
                                android:layout_marginLeft="10dp"
                                android:layout_marginRight="10dp"
                                android:text="Israel Consulate"
                                android:textColor="#000000"
                                android:textSize="17sp" />
    
                            <TextView
                                android:id="@+id/israel_consulate_text_view"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_gravity="center_vertical"
                                android:layout_marginLeft="10dp"
                                android:layout_marginRight="10dp"
                                android:text=""
                                android:textColor="#000000"
                                android:textSize="17sp" />
                        </LinearLayout>
    
                        <View
                            android:layout_width="0dp"
                            android:layout_height="0dp"
                            android:layout_weight="1" />
    
                        <ImageView
                            android:id="@+id/israel_phone_button"
                            android:layout_width="30dp"
                            android:layout_height="30dp"
                            android:layout_gravity="center_vertical"
                            android:src="@android:drawable/sym_action_call"
    
                            />
                    </LinearLayout>
    
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:paddingBottom="20dp"
                        android:paddingLeft="10dp"
                        android:paddingRight="10dp"
                        android:paddingTop="20dp">
    
                        <ImageView
                            android:layout_width="40dp"
                            android:layout_height="40dp"
                            android:src="@drawable/chabad" />
    
    
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:orientation="vertical">
    
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_gravity="center_vertical"
                                android:layout_marginLeft="10dp"
                                android:layout_marginRight="10dp"
                                android:text="Chabad"
                                android:textColor="#000000"
                                android:textSize="17sp" />
    
                            <TextView
                                android:id="@+id/chabad_number_text_view"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_gravity="center_vertical"
                                android:layout_marginLeft="10dp"
                                android:layout_marginRight="10dp"
                                android:text=""
                                android:textColor="#000000"
                                android:textSize="17sp" />
    
    
                            <TextView
                                android:id="@+id/chabad_address_text_view"
                                android:layout_width="150dp"
                                android:layout_height="wrap_content"
                                android:layout_gravity="center_vertical"
                                android:layout_marginLeft="10dp"
                                android:layout_marginRight="10dp"
                                android:text=""
                                android:textColor="#000000"
                                android:textSize="13sp" />
    
                        </LinearLayout>
    
                        <View
                            android:layout_width="0dp"
                            android:layout_height="0dp"
                            android:layout_weight="1" />
    
                        <ImageView
                            android:id="@+id/chabad_phone_button"
                            android:layout_width="30dp"
                            android:layout_height="30dp"
                            android:layout_gravity="center_vertical"
                            android:src="@android:drawable/sym_action_call" />
    
                    </LinearLayout>
                </LinearLayout>
            </RelativeLayout>
        </ScrollView>
    </RelativeLayout>
    

    One alternative to get the result you want is hide the device's virtual keyboard. This will inhibit the EditText to gain focus thus not scrolling the screen. You can achieve this with this function:

    public static void hideKeyboard(Activity activity) {
        InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
        //Find the currently focused view, so we can grab the correct window token from it.
        View view = activity.getCurrentFocus();
        //If no view currently has focus, create a new one, just so we can grab a window token from it
        if (view == null) {
            view = new View(activity);
        }
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
    

    Called this way: hideKeyboard(this); , preferentially inside your onCreate() method.

    If user taps EditText, virtual keyboard is showed again.

    链接地址: http://www.djcxy.com/p/4148.html

    上一篇: 如何在eclipse Helios和GWT 2.1.1中打开GWT示例?

    下一篇: 停止使用活动中的滚动视图获得焦点的edittext