2014-11-13 20 views
6

Ich habe ein paar EditTexte in 2 Fragmente verteilt. Eines der Fragmente hat das folgende XML-Layout:Android EditText nächsten Fokus

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/cool_button" 
     android:gravity="center" 
     android:text="@string/user_account" 
     android:textAppearance="?android:attr/textAppearanceMediumInverse" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@color/yellow" 
     android:gravity="center" 
     android:padding="10dp" 
     android:text="@string/registration_description1" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.4" 
       android:text="@string/email_address" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@+id/et_email_address" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.6" 
       android:ems="10" 
       android:hint="@string/required" 
       android:inputType="textEmailAddress" > 
      </EditText> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="0.4" 
       android:gravity="center_vertical" 
       android:text="@string/email_address_confirmation" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@+id/et_email_address_confirm" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="0.6" 
       android:ems="10" 
       android:hint="@string/required" 
       android:inputType="textEmailAddress" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:id="@+id/tv_title" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.4" 
       android:text="@string/title" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="bold" /> 

      <Spinner 
       android:id="@+id/sp_title" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.6" 
       tools:listitem="@android:layout/simple_spinner_dropdown_item" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.4" 
       android:text="@string/first_name" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@+id/et_first_name" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.6" 
       android:ems="10" 
       android:hint="@string/required" 
       android:inputType="textCapWords" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.4" 
       android:text="@string/surname" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:textStyle="bold" /> 

      <EditText 
       android:id="@+id/et_surname" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.6" 
       android:ems="10" 
       android:hint="@string/required" 
       android:imeOptions="actionDone" 
       android:inputType="textCapWords" /> 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 

Und das andere Layout:

<?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" 
    android:isScrollContainer="false" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/cool_button" 
      android:gravity="center" 
      android:text="@string/title_fragment_register_business_and_contact_details" 
      android:textAppearance="?android:attr/textAppearanceMediumInverse" /> 

     <TableLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/business_name" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_business_name" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:hint="@string/required" 
        android:inputType="textCapWords" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="match_parent" 
        android:gravity="center_vertical" 
        android:text="@string/street_name_and_number" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_street1" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="match_parent" 
        android:hint="@string/required" 
        android:inputType="textCapWords" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/street2_bigger" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_street2" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:inputType="textCapWords" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/street3_bigger" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_street3" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:inputType="textCapWords" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/street4_bigger" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_street4" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:inputType="textCapWords" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/town_or_city" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_town" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:hint="@string/required" 
        android:inputType="textCapWords" 
        android:nextFocusDown="@+id/et_county" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/county" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_county" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:hint="@string/required" 
        android:inputType="textCapWords" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="10dp" 
       android:layout_marginTop="10dp" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/country" 
        android:textStyle="bold" /> 

       <TextView 
        android:id="@+id/textView1" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/united_kingdom" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/postcode" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_postcode" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:hint="@string/required" 
        android:inputType="textCapCharacters" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/business_tel" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_business_tel" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:hint="@string/required" 
        android:imeOptions="actionNext" 
        android:nextFocusDown="@+id/et_business_email" 
        android:inputType="phone" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/business_email" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_business_email" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:imeOptions="actionNext" 
        android:inputType="textEmailAddress" 
        android:nextFocusDown="@+id/et_website" /> 
      </TableRow> 

      <TableRow 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:text="@string/website" 
        android:textStyle="bold" /> 

       <EditText 
        android:id="@+id/et_website" 
        android:layout_width="0dp" 
        android:layout_weight="0.5" 
        android:layout_height="wrap_content" 
        android:imeOptions="actionDone" 
        android:inputType="textWebEditText" > 
       </EditText> 
      </TableRow> 
     </TableLayout> 
    </LinearLayout> 

</ScrollView> 

Wenn ich auf et_business_tel nächsten drücken, geht es zu den anderen Fragmenten EditText. Manchmal geht es zu et_email_address_confirm, andere zu et_first_name. Dies geschieht auch in et_business_email. Ich habe versucht Android: nextFocusDown, aber es scheint nicht zu funktionieren. Mache ich etwas falsch oder gibt es eine Möglichkeit, auf den nächsten Button zu zeigen, um den nächsten editText zu fokussieren?

Antwort

3

Sie können programmatisch entscheiden, was Ihre nächste EditText zu konzentrieren ist.

Setzen Sie OnEditorActionListener auf Ihren editText und machen Sie den nächsten EditText, um den Fokus anzufordern.

oneEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event) { 

      if (actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_GO || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { 
       YourOtherEditText.requestFocus(); 
       return true; 
      } else { 
       return false; 
      } 
     } 
    }); 
+0

ich dies nicht getestet, da ich meine eigene Antwort gefunden. Aber trotzdem danke. –

0

Ich habe es geschafft, einen Workaround zu finden. Ich hatte das zweite Fragment in einer scrollView und als ich die scrollView entfernte, funktionierten die nächsten Buttons richtig.

Nur was ich nicht beantworten kann, ist warum ... Danke sowieso.

+0

Wenn Sie zwei Fragmente (eine über der anderen) mit editText-Feldern haben, kann die nächste Schaltfläche des sichtbaren Fragments den Fokus auf den editText in den dahinter liegenden Feldern legen. Sie sollten die editText-Felder im Hintergrundfragment in onPause() deaktivieren. Aus diesem Grund "löse" du deine scrollView, die deine editText-Felder des ersten Fragments umschließt, um deine Fokusprobleme zu lösen. Prost! – portfoliobuilder

7

android:nextFocusDown="@+id/et_business_email" sein Sprung auf den Text neben Fokus bearbeiten

+2

Versuchen Sie, android: imeOptions = "actionNext" hinzuzufügen, wenn es nach dem Definieren des nächsten Fokuselements nicht funktioniert – TheIT

8

ich diese verwenden, ist es für mich gearbeitet:

android:imeOptions="actionNext" 
android:nextFocusRight="@+id/staff" 
+1

android: imeOptions = "actionNext" hat den Trick gemacht! – TheIT