2015-11-23 15 views
7

Uygulamamdaki bir ekran potansiyel olarak uzun dizeleri TextView içine gönderir. Bu senaryo için, android:ellipsize="marquee" ayarlanmış, böylece metin TextView'da gözükecektir. Bununla birlikte, bu metnin seçilebilir olmasına da karar verdim (android:textIsSelectable="true"). Çoğu durumda, bu sorun değil. Metin, TextView'den daha küçüktür ve kullanıcı bunu seçebilir. Ancak, textIsSelectable özniteliğime sahipse ve metin TextView'den daha büyükse, metin tam dizgi yerine elips seçecektir. Yine de'u seçecek, ancak artık tam metni göstermiyor. Onu keser ve bir elips görüntüler.Metin ayarlamaSolunabilir eleksizle birlikte TextView üzerinde Seçilebilir elips ekler

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="?android:attr/listPreferredItemHeightSmall" 
     android:ellipsize="marquee" 
     android:focusable="true" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textIsSelectable="true"> 

kayan yazı (hayır elips) dizenin tamamını metni seçilebilir var ve hala muhafaza etmek bir yolu var mı?

+0

Tam olarak ne istiyorsunuz? –

+1

Metin seçip metin kaydında/metinde kaydırma yap/ –

+0

Evet. İstediğim bu. – Andrew

cevap

1

Bunun bir hata olup olmadığından emin olama. Bu konuda daha fazla sonra - biz xml android:ellipsize="start" kuruyorsun

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="?android:attr/listPreferredItemHeightSmall" 
    android:ellipsize="start" 
    android:focusable="true" 
    android:gravity="center_vertical" 
    android:singleLine="true" 
    android:textIsSelectable="true"/> 

Not. mevcut ellipsize değeri verilenle aynı olup olmadığını

mTextView = (TextView) findViewById(R.id.tv); 
mTextView.post(new Runnable() { 
    @Override 
    public void run() { 
     mTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE); 
     mTextView.setSelected(true); 
    } 
}); 

setEllipsize(TruncateAt) kontrol eder. Bunu aşmak için, xml olarak android:ellipsize="start" tedarik ediyoruz. Bu şekilde, TextView daha sonra TextUtils.TruncateAt.MARQUEE kabul etmede sorun yaşamayacaktır.

Şimdi, bu işe yaramasa da, bunu yapmamanızı önereceğim. Bu kodu denediğinizde nedenini görebileceksiniz. textIsSelectable'un marquee ile kullanılması beklenmiyor - seçim tutamaçları metinle birlikte hareket etmiyor.

Sonuç olarak, oldukça kabataslak görünüyor.