2013-11-21 81 views
1

我正在經歷一個奇怪的問題。我在一個RelativeLayout裏面有多個EditText,它最終在一個ScrollView中。我的問題是,無論何時編輯第二個(或第三個等)EditText,它都會失去焦點到ScrollView中的第一個EditText,並且第一個EditText獲取鍵盤輸入。更改EditText中的輸入更新ScrollView中的錯誤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獲取了該值。例如:

enter image description here

回答

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

這條線。 祝你好運。

0

進行更改後,您可以將焦點設置到所需的編輯文本。

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

其不工作這種方式 –

+0

嗯,嘗試更改您的XML和代碼中的ID,只需在所有editTexts上添加1即可。在使用相對佈局時,我在eclipse中有時會遇到一個奇怪的錯誤,並且類似的事情發生了,即使這些ID是好的,他們的行爲就像我選擇了不同的字段,儘管它明顯表示代碼和xml是正確的。更改ID爲不同的名稱幫助。 – JanBo

+0

不工作這種方式:( –

0

它在我的設備上工作。 我不知道爲什麼它不能在你的工作,我認爲在Java代碼中,可能有一些錯誤。 不過你可以試試,

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

增加3號線到你的 「parentLayout」

+0

之前嘗試過這種方式,但它沒有工作..順便說一句,我沒有嘗試任何物理設備 –

+0

在我的模擬器,它也工作得很好:) –