-1

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:

  1. Dummy item to prevent AutoCompleteTextView from receiving focus
  2. 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>
Community
  • 1
  • 1
RJB
  • 1,704
  • 23
  • 50

1 Answers1

0

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.

statosdotcom
  • 3,109
  • 2
  • 17
  • 40
  • This didn't hide the keyboard – RJB May 08 '17 at 19:13
  • Maybe it's because you have two EditTexts. Try excluding one just for testing reasons. This is bulletproof, trust me. You could implement a function that, once the first EditText is used, you show the second one (very simple: begin the second one with xml attribs "hidden" then "setVisibility"). – statosdotcom May 08 '17 at 19:20
  • Ok, here is a plain and clean scrollview with linearlayout, nice, intelligent and objective, and works in many APIs. You don't need to say thank you babe. Be happy. – statosdotcom May 08 '17 at 19:37