10

Bir düğme görünümünde, metin görünümü ile ilişkili bağlamsal eylem çubuğunu programlı olarak başlatmanın bir yolu var mı? Kopyalama/tümünü seç varsayılan seçenekleri içermelidir. Temel olarak, benim metin görünümünde seçim tutamaçlarını ve android tuşun bir tıklatmayla (uzun tıklama/çift dokunma yerine) eylem çubuğundaki tüm seçeneği kopyala/seç seçeneğini göstermek istiyorum.Metin işleme için bağlamsal eylem çubuğunu varsayılan opions ile programatik olarak nasıl başlatılır ve tümünü seçer?

Şimdiye kadar denediğim: setCustomActionModeCallback() api kullanmayı denedi, ancak burada sorun, kullanıcının CAB'nin görünmesi için metin görünümüne uzun basın/çift tıklatması gerekiyor. startActionMode() api kullanarak çalıştı, ancak varsayılan öğeleri korumak için bir yol bulamadı .. sadece yeni bir boş bir CAB açar .. biliyorum, özel kopya-select tüm kod ekleyebilir ve bu boş CAB kullanabilirsiniz, ama ben varsayılan olarak kendi başıma yönetmek yerine bir android kullanmak istiyorum.

Edit; EditText kullanamıyorum. Görünüm sadece TextView olmalı ve uzun tıklama devre dışı bırakılacaktır. Ben

+0

Eğer TextView veya EditText içinde istiyorum teşekkür ederim. –

+0

Metni seçilebilir olarak ayarladığınızda, uzun tıklatma örtülü olarak etkinleştirilir. – Simas

cevap

2

elle metin seçin ve ardından uzun bir tıklama gerçekleştirmek seçilebilir olarak TextView ayarlayarak tüm yukarıdaki değişiklikleri yapıyorum:

textView.post(new Runnable() { 
    @Override 
    public void run() { 
     Selection.selectAll((Spannable) tv.getText()); 
     tv.performLongClick(); 
    } 
}); 

Düzenleme:

sorun olduğunu yerleşik metin seçimi CAB özeldir ve çoklu özel sınıflar kullanır. Çok fazla kod kopyalamanız veya kullanmak için yansıması olan bir sürü yönteme erişmeniz gerekir.

Kendi CAB menünüzü yapabilirdiniz, ancak yine çok fazla kod olan denetleyici tutamaçlarına da ihtiyacınız olacaktır.

Basit bir çözüm, sahip olduğunuzla yaşamak ve yukarıda önerilen yöntemimi kullanmak olacaktır. Eğer uzun tıklama işleyicisi arama önlemek istiyorsanız taksi çağırma sırasında kaldırabilirsiniz:

Selection.selectAll((Spannable) tv.getText()); 
tv.setOnLongClickListener(null); 
tv.performLongClick(); 
tv.setOnLongClickListener(mLongClickListener); 
+0

Dediğim gibi, geçersiz kılınmış ve bir menüyü göstermek için kullanıldığı için uzun tıklamayı kullanamayacağım. – afadfadf

+0

@noone, cevabı burada neler olup bittiğine dair biraz daha ayrıntılı bilgi vermek için güncelledi. Ayrıca mevcut bir OnLongClickListener için bir çözüm. – Simas

+0

Bu benim kullanım durumumla uyumlu değil, ama bence bu, kabin yaşam döngüsünü yazma ve yönetme dışında tek yolumun tek yolu. Bu yüzden doğru cevabı işaretleme - – afadfadf

1

Eğer takip edebilirsiniz birkaç yaklaşım vardır daha metin görünümünde metin seçmek istiyorum. İlk yapabileceğiniz şey, TextView öğesinin xml özelliklerini ayarlar.

android:textIsSelectable = "true" 

txtView.setTextIsSelectable(true) 

textIsSelectable bayrağı kullanıcıları sırayla sistemin dahili kopyala/yapıştır kontrollerini tetikler TextView, seçim jestler yapmaya izin verir. görünüm odak aldığında

veya

android:selectAllOnFocus = true; 
setSelectAllOnFocus(boolean) 

metin seçilebilir ise

, hepsini seçin. ve odağınızı Düğmenizin üzerine tıklayarak ayarlayabilirsiniz. RequestFocus() yöntemini kullanarak.

Daha ayrıntılı bilgi için bu Link'e başvurabilirsiniz. Gerekli tüm görevlerinizi tamamlayacaksınız. http://developer.android.com/reference/android/widget/TextView.html[http://developer.android.com/reference/android/widget/TextView.html][1]

Eğer

+0

Üzgünüm, cevabınızı da almadım. :) – afadfadf

+0

Yukarıdaki cevap edittext seçmeniz veya kopyalamanız için size yardımcı olacaktır –

+0

Lütfen soru okuyun. Onun TextView, değil edittext ve benim kullanım durumumda açıkça belirtmiş olduğunuzu belirtmişsinizdir. – afadfadf

İlgili konular