2015-05-04 1 views
0

Я создал несколько текстов редактирования программно, используя существующий текст редактирования, доступный в XML-файле, но когда основной текст редактирования получает фокус, то текстовые тексты, создаваемые динамически, также получают фокус. Мой код, как показано ниже:Программно созданный текст редактирования также получает фокус при нажатии другого текста редактирования в android

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_worker_reg); 
     existingContact = (EditText)findViewById(R.id.workerPhone); 
     drawable = existingContact.getBackground(); 
    } 

public void addAnotherContactNumber(View view) { 
     final CharSequence[] options = { "Work", "Home","Cancel" }; 
     AlertDialog.Builder builder = new  AlertDialog.Builder(WorkerRegActivity.this); 
     builder.setTitle("Add Contact Number!"); 
     builder.setItems(options, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int item) { 
       if (options[item].equals("Work")) 
       { 
        linearLayout =  (LinearLayout)findViewById(R.id.containerLayout); 
        EditText newContact = new EditText(WorkerRegActivity.this); 
        newContact.setHint("Phone NO." + (newContactIndex - 1)); 
         newContact.setHintTextColor(existingContact.getHintTextColors()); 
        newContact.setInputType(existingContact.getInputType()); 
        newContact.setLayoutParams(existingContact.getLayoutParams()); 

        int sdk = android.os.Build.VERSION.SDK_INT; 
        if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
         newContact.setBackgroundDrawable(drawable); 
        } else { 
         newContact.setBackground(drawable); 
        } 

        linearLayout.addView(newContact, newContactIndex); 
        newContactIndex += 1; 

        contactList.add(newContact); 

       } 
       else if (options[item].equals("Home")) 
       { 

       } 
       else if (options[item].equals("Cancel")) { 
        dialog.dismiss(); 
       } 
      } 
     }); 
     builder.show(); 
    } 

На самом деле я хочу создать несколько текстов редактирования с помощью существующего редактирования текста, как это определено в XML-файл с таким же фоном, но когда один редактировать текст получает фокус еще один также получает фокус автоматически. Пожалуйста, помогите .....

ответ

1

При добавлении новых editTexts, просто добавьте свойство линии выключая фокус:

edittext.clearFocus(); 

где EditText является идентификатор вашего EditText.

Если это doesn'twork, вы можете использовать это:

<!-- Dummy item to prevent AutoCompleteTextView from receiving focus --> 

<LinearLayout 
    android:focusable="true" android:focusableInTouchMode="true" 
    android:layout_width="0px" android:layout_height="0px"/> 

<!-- :nextFocusUp and :nextFocusLeft have been set to the id of this component 
    to prevent the dummy from receiving focus again --> 
<AutoCompleteTextView android:id="@+id/autotext" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:nextFocusUp="@id/autotext" android:nextFocusLeft="@id/autotext"/> 

Это просто aworkaround обмануть андроид, чтобы передать фокус на что-то другое, чем текст редактирования. Помните, однако, что вы должны поместить фиктивный элемент непосредственно перед редактированием текста, с которого вы хотите отменить фокус.

+0

Я уже это сделал, но он не работает –

+0

См. Отредактированный ответ –

0

Выполняя такую ​​вещь, мы должны использовать другой объект, который можно вытащить, а не тот же экземпляр.

Drawable clone = drawable.getConstantState().newDrawable(); 
Смежные вопросы