Search code examples
androidandroid-edittexthorizontalscrollview

Why is HorizontalScrollView scrolling to right?


The below XML contains an EditText control. As soon as I touch it, the softkeyboard appears but the HorizontalScrollView scrolls to the right so I cannot see the EditText!

Can somebody please tell me what is wrong with the below XML and why it is doing this?

Please excuse hardcoded widths - this is only a test bit of code for sanity checking.

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

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">

<HorizontalScrollView 
  android:id="@+id/testScrollView"
  android:layout_width="1280dp"
  android:layout_height="match_parent"
  android:scrollbars="horizontal"
  android:background="#00FF00">

  <LinearLayout 
    android:id="@+id/layout"
    android:layout_width="2560dp"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <LinearLayout 
      android:id="@+id/mLeftBaseLinearLayout"
      android:layout_width="1280dp"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:background="#FF0000">

     <EditText
       android:id="@+id/mEditText"
       android:layout_width="match_parent"
       android:layout_height="40dp"
       android:background="#BBBBBB"
       android:gravity="center"
       android:text="EditText"
       android:textColor="#FFFF00"
       android:textSize="30dp"
       android:singleLine="true"
       android:clickable="true"
       android:editable="true"
       android:focusable="true"
       android:focusableInTouchMode="true"
       android:inputType="text"/>

     <ListView          
       android:id="@+id/mListView"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_weight="1"
       android:background="#80FFFFFF" >
     </ListView>

    </LinearLayout>

    <LinearLayout 
      android:id="@+id/linLayout"
      android:layout_width="1280dp"
      android:layout_height="match_parent"
      android:orientation="vertical"
      android:background="#00FF00">

      <Button
        android:layout_width="600dp"
        android:layout_height="wrap_content"
        android:text="Button1" />

      <Button
        android:layout_width="600dp"
        android:layout_height="wrap_content"
        android:text="Button2" />            

    </LinearLayout>        

  </LinearLayout>

</HorizontalScrollView>

</FrameLayout>

My tablet is running Android 4.2.1


Solution

  • I found my solution - override scrollTo() and do absolutely nothing.