2012-08-27 28 views
3

有滾動型內一個TextView,TextView的是充斥着大量的文字,只有它的文本的某些部分是在任何時間顯示在屏幕上。現在想 1(編程)強制文本的某些部分是對用戶可見。例如,我的文字是:如何使長時間的TextView的一部分顯示在屏幕上? 1

Lorem存有胡蘿蔔,生態番茄湯。這是該地區。法無。桑達孕婦燕雀velit,非sollicitudin特力想找到沒有。規劃明天,沒時間喝值得DUI坐開發商表示,消費者觀光我的元素。獅子繼電器區,香蕉和開發商,但沒有收到值得。現在,蛋白質硬件製造局生產,臨牀LOREM說旅行社,航空公司LOREM任何免費胡蘿蔔硬件。然而,融資卡通教材,足球航空公司客戶和自身。壓力是主要SAPIEN和天然氣開發。壞Suspendisse ultrices risus,dignissim非。但是,除了你們不是說他應該tortor facilisis dignissim NIBH保護者在。營養扣除期間色拉,胡蘿蔔房地產弓給作者。住在宏觀化妝直徑的客戶。智能手機。整數sollicitudin悲坐,並提高了。每個山谷抗氧化劑顫動。

1要強制粗體字(溫度在這個例子中)爲對用戶可見(也許通過與TextView的一個正確的值垂直滾動)。 有沒有辦法做到這一點?

編輯:1不想做的話大膽!問題更新,以澄清我的要求。

+0

至於1所看到的,你不能用一個標準'TextView'做到這一點。有一個'getLineBounds'方法,將返回基線對於給定線的y座標,但1看不到的方式來確定哪些行包含一個特定的字符串。 – user113215

回答

1

這裏是滾動到一個特定的詞的一種方式,

public void scrollToWord(String string) { 
    TextView textView = (TextView) findViewById(R.id.text1); 
    String text = textView.getText().toString(); 

    // Find the first occurrence of the word 
    int position = text.indexOf(string); 
    // Calculate how far in the word is: 30%, 40%, 73% 
    int percent = (int) (position/(double) text.length() * 100); 
    // Calculate how far to scroll 
    int y = textView.getHeight() * percent; 

    // Finally scroll 
    ((ScrollView) textView.getParent()).scrollTo(0, y); 
} 

1對此有兩個音符:

  1. 這隻滾動到第一次出現,但很容易夠到String.indexOf(string, start)改變,並找到第二,第三等

  2. 如果你想盡快的應用程序已經開始滾動到這個位置上,你必須等到的onResume()結束後。但對此沒有方法... 1建議使用一個手柄,如果你需要它可以幫你。

希望幫助!

+0

謝謝,我喜歡你的回答和兩個筆記。但是,顯然你的答案並不準確(你知道,因爲我的字體中的字符寬度不一樣,也取決於文本和單詞等)。 – yrajabi

+0

這只是一個近似值,而不是一個精確的度量值。我不知道任何準確的方法來計算由於像你這樣的字體,不同大小的屏幕等字詞的位置。但是這個近似值不應該創建太多的偏移量,你應該有一個大的緩衝區來處理(例如10% - 30%),具體取決於字體,視野和文本長度。所以除非你試圖在一個TextView中顯示一本書,否則我不會擔心。 (如果您嘗試顯示大量文本,請考慮帶有HTML鏈接和JavaScript的WebView。) – Sam

0

您可以使用HTML標記與大膽的選擇,使每一個字加粗。

+1

1 yrajabi想如何使這一詞的意思是可見的,即它滾動到視圖中。 – Ridcully

+0

@Programmer 1不想讓特定單詞大膽! 1要使它對用戶可見。 – yrajabi

+0

@Ridcully是的,你是對的。 1要TextView的在其特定的字是對用戶可見的位置滾動。 – yrajabi

1

這將是一個相當努力,但分別使用android.graphics.Paint#measureText(...)breakText(...)應該可以爲你計算你怎麼有滾動,使所需單詞可見。你必須要考慮到的字體,字體大小,視圖的大小顯示文本等。等等

相關問題