2012-03-19 5 views
5

Uygulamamda beş Düzenleme Metnim var. Ayrıca "İleri" ve "Önceki" olarak adlandırılan iki düğmem var. Şimdi, görünümlerimi dinamik olarak oluşturduğum ilgili düğmeleri tıkladığımda, bir sonraki ve bir önceki düzenleme metin alanlarını seçmek istiyorum. Bunu yapmanın bir yolu var mı? senin Layout.xml içinde EditText en özniteliklerdeSonraki ve sonrakiler nasıl seçilir Bir görünümünde metinleri düzenleme

android:nextFocusLeft 

android:nextFocusRight 

android:nextFocusUp 

android:nextFocusDown 

ait

+1

** requestFocus() * * – ngesh

+0

İlgili düğmeye dokunulduğunda odağı bir EditText'ten diğerine/öncekie değiştirmek istediğiniz anlamına mı geliyor? –

+0

@ sandy- Öneri için teşekkürler. Yukarıdaki örnek uygulama benim ve gerçek projemde neredeyse 50 tane metin alanı var, bu yüzden her alan için talep odaklaması çok karmaşık. Bunu yapmanın basit bir yolu var mı? – Sniper

cevap

11
btnNext.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusDownId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Next"); 
     } 
    } 
}); 

btnBack.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     int id = getCurrentFocus().getNextFocusUpId(); 
     if(id != View.NO_ID) { 
      findViewById(id).requestFocus(); 
      System.out.println("Back"); 
     } 
    } 
}); 

Bu odaklamayı ayarlamak zorunda XML sipariş

<EditText 
    android:id="@+id/et1" 
    android:nextFocusDown="@+id/et2" 
    android:nextFocusUp="@+id/et2" 
    ....../> 

<EditText 
    android:id="@+id/et2" 
    android:nextFocusDown="@+id/et1" 
    android:nextFocusUp="@+id/et1" 
    ...../> 

Düzenleme

o zaman bir sonraki Odağı ayarlamak için yöntemlerinin altındaki kullanmalıdır dinamik görünümü oluşturuyorsanız

setNextFocusDownId(id) 
setNextFocusUpId(id); 
+0

Bunu bir XLM kodunda kullanabilirim ancak çalışma zamanında düzenleme metni oluşturuyorum, bunu yapamam. Herhangi bir öneri. – Sniper

+1

Cevabımı güncelledim – Dharmendra

+0

Teşekkürler. – Sniper

3

yararlanın.

örn. o

+0

Düğme tıklama olayımda bunu nasıl kullanabilirim? – Sniper

+0

Lütfen güncellenmiş yanıtımı kontrol edin, takip etmek için link verdim. Veya görünümlerinizi dinamik olarak, yani .java dosyaları aracılığıyla oluşturuyorsanız, ikinci cevabımı inceleyebilirsiniz. – Rajkiran

1

deneyin - Kullanmak Can

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_next : 
      if(editText1.hasFocus()){ 
       editText2.requestFocus(); 
      }else if(editText2.hasFocus()){ 
       editText3.requestFocus(); 
      } 
      break; 
     case R.id.btn_previous : 
      if(editText2.hasFocus()){ 
       editText1.requestFocus(); 
      }else if(editText3.hasFocus()){ 
       editText2.requestFocus(); 
      } 
      break; 
    } 
} 
+0

Yanlış sözdizimi (editText1! .hasFocus()) olması gerekir (! EditText1.hasFocus()) Bu yardımcı olmayacaktır. mantığınıza göre sadece edittext1 ve edittext2 – Dharmendra

+0

odaklanacaktır. Bu kesinlikle bir yazım hatası (ve kopyala yapıştır) oldu. Bu aslında bir sözdizimi hatasıdır. Düzenlenen. – Rajkiran