在EditText中更改输入会更新ScrollView中的错误EditText

时间:2013-11-21 13:58:07

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

我正在经历一个特殊的问题。我在RelativeLayout中有多个EditText,它最终位于ScrollView中。我的问题是每当我编辑第二个(或第三个等)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>

如何解决此问题?

修改

我附上了问题的截图。我已进入&#34; h&#34;在passwordEditText中,但nameEditText获取值。

enter image description here

3 个答案:

答案 0 :(得分:3)

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);

这一行。 祝你好运。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

它正在我的设备中工作。 我不知道为什么它不适合你,我认为在java代码中,可能会有一些错误。 但你可以试试,

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

将第3行添加到“parentLayout”