【问题标题】:Changing input in an EditText updates the wrong EditText inside ScrollView更改 EditText 中的输入会更新 ScrollView 中的错误 EditText
【发布时间】:2013-11-21 13:58:06
【问题描述】:

我遇到了一个特殊的问题。我在一个最终位于 ScrollView 内的 RelativeLayout 中有多个 EditText。我的问题是,每当我编辑第二个(或第三个等)EditText 时,它会失去对 ScrollView 内的第一个 EditText 的焦点,而这第一个 EditText 会获得键盘输入。

这里是 xml 布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/parentLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <RelativeLayout 
            android:id="@+id/particularsLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="50dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp">
            <TextView
                 android:id="@+id/particularsTextView"
                 android:layout_alignParentTop="true"
                 android:layout_alignParentLeft="true"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="PARTICULARS"
                 android:textColor="@android:color/darker_gray"
                 android:textStyle="bold"

            />
            <View 
                android:id="@+id/bar1"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@android:color/darker_gray"
                android:layout_below="@+id/particularsTextView"

            />

            <RelativeLayout
                android:id="@+id/particularsParentRelativeLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                android:layout_below="@+id/bar1"
                android:layout_marginTop="10dp"
            >

                    <EditText
                        android:id="@+id/nameEditText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_marginTop="15dp"
                        android:layout_alignLeft="@+id/confirmPasswordEditText"
                        />
                    <TextView 
                        android:id="@+id/nameTextView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="NAME"
                        android:textColor="@android:color/darker_gray"
                        android:textStyle="bold"

                        android:layout_alignBottom="@+id/nameEditText"
                        android:layout_marginBottom="15dp"
                        android:textSize="12sp"

                    />

                    <TextView 
                        android:id="@+id/passwordTextView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="PASSWORD"
                        android:textColor="@android:color/darker_gray"
                        android:textStyle="bold"
                        android:layout_alignBottom="@+id/passwordEditText"
                        android:layout_marginBottom="15dp"

                        android:textSize="12sp"

                    />
                    <EditText
                        android:id="@+id/passwordEditText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/nameEditText"
                        android:layout_marginTop="10dp"
                        android:layout_toRightOf="@+id/passwordTextView"
                        android:layout_alignParentRight="true"
                        android:nextFocusUp="@+id/passwordEditText"
                        android:layout_alignLeft="@+id/confirmPasswordEditText"
                        />

                    <TextView 
                        android:id="@+id/confirmPasswordTextView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="CONFIRM PASSWORD"
                        android:textColor="@android:color/darker_gray"
                        android:textStyle="bold"
                        android:layout_alignBottom="@+id/confirmPasswordEditText"
                        android:layout_marginBottom="15dp"

                        android:textSize="12sp"

                    />
                    <EditText
                        android:id="@+id/confirmPasswordEditText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                         android:layout_below="@+id/passwordEditText"
                        android:layout_marginTop="10dp"
                        android:layout_toRightOf="@+id/confirmPasswordTextView"
                        android:layout_alignParentRight="true"


                        android:layout_marginLeft="5dp"
                        />
                    <TextView 
                        android:id="@+id/birthdayTextView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="BIRTHDAY"
                        android:textColor="@android:color/darker_gray"
                        android:textStyle="bold"
                        android:layout_alignBottom="@+id/birthdayEditText"
                        android:layout_marginBottom="15dp"
                        android:textSize="12sp"

                    />
                    <EditText
                        android:id="@+id/birthdayEditText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                         android:layout_below="@+id/confirmPasswordEditText"
                        android:layout_marginTop="10dp"
                        android:layout_toRightOf="@+id/birthdayTextView"
                        android:layout_alignParentRight="true"


                        android:layout_alignLeft="@+id/confirmPasswordEditText"
                        />
                    <TextView 
                        android:id="@+id/genderTextView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="GENDER"
                        android:textColor="@android:color/darker_gray"
                        android:textStyle="bold"
                        android:layout_marginTop="18dp"
                        android:layout_below="@+id/birthdayTextView"
                        android:textSize="12sp"

                    />

             <TextView
                 android:id="@+id/contactDetailsTextView"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_below="@+id/genderTextView"
                 android:text="CONTACT DETAILS"
                 android:textColor="@android:color/darker_gray"
                 android:textStyle="bold"
                 android:layout_marginTop="50dp"
                 />   
                 <View 
                android:id="@+id/bar2"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@android:color/darker_gray"
                android:layout_below="@+id/contactDetailsTextView"     
                />


                 <TextView
                     android:id="@+id/contactNoTextView"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignBottom="@+id/contactNoEditText"
                     android:layout_marginBottom="15dp"
                     android:text="CONTACT NO."
                     android:textSize="12sp"
                     android:textColor="@android:color/darker_gray"
                     android:textStyle="bold"
                     />
                 <EditText
                        android:id="@+id/contactNoEditText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/bar2"
                        android:layout_marginTop="15dp"

                        android:layout_alignParentRight="true"

                        android:layout_alignLeft="@+id/confirmPasswordEditText"
                        />

                 <TextView 
                        android:id="@+id/emailAddressTextView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="EMAIL AD."
                        android:textColor="@android:color/darker_gray"
                        android:textStyle="bold"
                        android:layout_alignBottom="@+id/emailAddressEditText"
                        android:layout_marginBottom="15dp"
                        android:textSize="12sp"

                    />
                    <EditText
                        android:id="@+id/emailAddressEditText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/contactNoEditText"
                        android:layout_marginTop="10dp"
                        android:layout_alignParentRight="true"


                        android:layout_alignLeft="@+id/confirmPasswordEditText"
                        />
                    <EditText
                        android:id="@+id/emailAddressEditText2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@+id/emailAddressTextView"
                        android:layout_marginTop="10dp"

                        android:layout_alignParentRight="true"
                        android:layout_alignLeft="@+id/confirmPasswordEditText"                 
                    />


                     <TextView 
                        android:id="@+id/countryTextView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="COUNTRY"
                        android:textColor="@android:color/darker_gray"
                        android:textStyle="bold"
                        android:layout_below="@+id/emailAddressEditText2"
                        android:layout_marginTop="18dp"

                        android:textSize="12sp"

                    />

                <CheckBox
                    android:id="@+id/termsCheckbox"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/countryTextView" />
                <TextView
                    android:id="@+id/termsTextView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@+id/termsCheckbox"
                    android:layout_alignBottom="@+id/termsCheckbox"
                    android:text="I AGREE TO THE TERMS AND CONDITIONS STATED"
                    android:textColor="@android:color/darker_gray"
                    android:layout_alignBaseline="@+id/termsCheckbox"

                />

                <Button 
                    android:id="@+id/signupButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/termsTextView"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:background="@drawable/signup"
                    android:layout_marginTop="30dp"
                    android:layout_marginBottom="30dp"
                    />
            </RelativeLayout>

        </RelativeLayout>      

    </RelativeLayout>

</ScrollView>

如何解决这个问题?

编辑:

我附上了我的问题的屏幕截图。我在 passwordEditText 中输入了“h”,但 nameEditText 得到了值。

【问题讨论】:

    标签: android xml android-layout scrollview android-scrollview


    【解决方案1】:
    mTabHost.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
    
            @Override
            public void onViewDetachedFromWindow(View v) {}
    
            @Override
            public void onViewAttachedToWindow(View v) {
                mTabHost.getViewTreeObserver().removeOnTouchModeChangeListener(mTabHost);
            }
        });
    

    在MainActivity.Java @setTabs() 函数之后添加这段代码

    mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
    

    这一行。 祝你好运。

    【讨论】:

      【解决方案2】:

      您可以在进行更改后将焦点设置到所需的编辑文本:例如

          myEditText3.setFocusableInTouchMode(true);
          myEditText3.requestFocus();
      

      【讨论】:

      • 嗯,尝试更改 xml 和代码中的 id,只需在所有 editTexts 上为 ex 添加 1。在使用相对布局时,我有时会在 Eclipse 中遇到一个奇怪的错误,并且会发生类似的事情,即使 id 没问题,它们的行为就像我选择了不同的字段,尽管很明显代码和 xml 都可以。将 ID 更改为不同的名称会有所帮助。
      【解决方案3】:

      它在我的设备中运行。 我不知道为什么它在你的中不起作用,我认为在 java 代码中,可能存在一些错误。 不过你可以试试,

      <RelativeLayout
              android:id="@+id/parentLayout"
              android:layout_width="match_parent"
              android:focusableInTouchMode="true"
              android:layout_height="match_parent" >
      

      将第 3 行添加到您的“parentLayout”

      【讨论】:

      • 以前试过这种方式,但没用。顺便说一句,我没有在任何物理设备上尝试过
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多