2014-11-13 16 views
6

Tôi có một vài EditTexts trải rộng thành 2 đoạn. Một trong những mảnh vỡ có cách bố trí sau xml:Android EditText tập trung tiếp theo

<?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> 

Và cách bố trí khác:

<?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> 

Khi tôi bấm tiếp theo trên et_business_tel, nó đi vào các mảnh vỡ khác EditText. Đôi khi nó đi vào et_email_address_confirm, những người khác nó đi đến et_first_name. Điều này cũng xảy ra trong et_business_email. Tôi đã thử android: nextFocusDown nhưng có vẻ như nó không hoạt động. Tôi có làm điều gì sai hay có cách nào để chỉ nút tiếp theo để tập trung vào editText tiếp theo không?

Trả lời

3

Bạn có thể quyết định theo chương trình nào là editText tiếp theo của bạn để tập trung.

Đặt OnEditorActionListener vào editText của bạn và thực hiện EditText tiếp theo để yêu cầu lấy nét.

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

tôi đã không kiểm tra này kể từ khi tôi tìm thấy câu trả lời của riêng tôi. Nhưng cảm ơn anyways. –

0

Tôi đã tìm cách giải quyết. Tôi đã có mảnh thứ hai bên trong một scrollView và khi tôi loại bỏ scrollView, các nút tiếp theo bắt đầu hoạt động đúng.

Điều duy nhất tôi không thể trả lời là lý do tại sao ... Cảm ơn anyways.

+0

Nếu bạn có hai đoạn (một trên đầu trang khác) với các trường editText, nút tiếp theo trên đoạn nhìn thấy được có thể tập trung vào editText trên các trường phía sau nó. Bạn nên vô hiệu hóa các trường editText trong đoạn nền trong onPause(). Đây là lý do tại sao ẩn scrollView của bạn mà bọc các lĩnh vực editText của bạn của mảnh đầu tiên 'giải quyết' vấn đề tập trung của bạn. Chúc mừng! – portfoliobuilder

7

android:nextFocusDown="@+id/et_business_email" đi của mình để tập trung tiếp theo chỉnh sửa văn bản

+2

Thử thêm android: imeOptions = "actionNext" nếu nó không hoạt động sau khi xác định phần tử tiêu điểm tiếp theo – TheIT

8

Tôi sử dụng này, nó làm việc cho tôi:

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

android: imeOptions = "actionNext" đã thực hiện thủ thuật! – TheIT

Các vấn đề liên quan