2014-10-02 60 views
0

是否有任何方法將我的數組中的粗體文本保留到第三個textview中?我已經通過爲每個按鈕單擊按鈕來將它從XML轉移到我的第一個和第二個文本瀏覽。我試圖用我的第三個textview替換粗體動物句子中的粗體字。我的第三個textview將會每秒不斷地顯示新的組合,這樣每次點擊一個按鈕來更改動物或句子時,textview將顯示新的組合。從textview中替換粗體文本?

這是我的strings.xml

<string-array name="Sentences"> 
     <item>"The big <![CDATA[<b>This</b>]]> ate the worm"</item> 
     <item>"The <![CDATA[<b>Is</b>]]> is strong"</item> 
     <item>"Every <![CDATA[<b>Just</b>]]> can run"</item> 
     <item>"I saw a <![CDATA[<b>A</b>]]>"</item> 
     <item>"The <![CDATA[<b>Test</b>]]> was sleeping"</item> 
    </string-array> 

    <string-array name="Animals"> 
     <item>"<![CDATA[<b>Cow</b>]]>"</item> 
     <item>"<![CDATA[<b>Sheep</b>]]>"</item> 
     <item>"<![CDATA[<b>Dog</b>]]>"</item> 
     <item>"<![CDATA[<b>Pig</b>]]>"</item> 
     <item>"<![CDATA[<b>Chicken</b>]]>"</item> 
    </string-array> 

這是我main.java

package com.MyFirstApp.App1; 

import java.util.Random; 
import android.app.Activity; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.text.Html; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.TextView; 
import android.widget.Button; 



public class Original extends Activity implements OnClickListener 
    { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button btn_sentence = (Button) findViewById(R.id.btn_sentence); 
     Button btn_animal = (Button) findViewById(R.id.btn_animal); 

     final Random ran = new Random(); 
     final Resources res = getResources(); 
     final TextView text1 = (TextView) findViewById(R.id.sentencetext); 
     final TextView text2 = (TextView) findViewById(R.id.animaltext); 
     final TextView text3 = (TextView) findViewById(R.id.newsentencetext); 


     btn_sentence .setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       String[] NewText = null; 
       NewText = res.getStringArray(R.array.Sentences); 
       String strRandom = NewText[ran.nextInt(NewText.length)]; 
       text1.setText(Html.fromHtml(strRandom)); 
      } 
      }); 
     btn_animal .setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       String[] NewText2 = null; 
       NewText2 = res.getStringArray(R.array.Animals); 
       String strRandom2 = NewText2[ran.nextInt(NewText2.length)]; 
       text2.setText(Html.fromHtml(strRandom2)); 
      } 
      }); 

     Thread t = new Thread() { 

       @Override 
       public void run() { 
       try { 
        while (!isInterrupted()) { 
        Thread.sleep(1); 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 



          String str = Html.fromHtml(text1).toString(); 
          String str2 = text2.getText().toString(); 
          str = str.replaceAll("<![CDATA[<b></b>]]>", str2); 
          text3.setText(Html.fromHtml(str)); 

         } 
        }); 
        } 
       } catch (InterruptedException e) { 
       } 
       } 
      }; 

      t.start();} 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    }} 

這是我在我的問題

String str = Html.fromHtml(text1).toString(); 
String str2 = text2.getText().toString(); 
str = str.replaceAll("<![CDATA[<b></b>]]>", str2); 
text3.setText(Html.fromHtml(str)); 

我不能似乎從第一個textview或第二個textview中獲得粗體文本。 例如

`String str2 = text2.getText().toString();` 

只返回第二TextView的文本,但它不是大膽,正如我需要它的人。我修好後,我希望我可以用這條線

str = str.replaceAll("<![CDATA[<b></b>]]>", str2); 

用新的大膽的動物取代舊的粗體文本。

幫助,將不勝感激

~TylerNormal 

回答

0

您可以嘗試這樣的事來構建大膽混合charsequesnce

TextView tv = (TextView) findViewById(R.id.txt); 
    SpannableStringBuilder b = new SpannableStringBuilder(); 
    b.append("hello "); 
    String boldData = "bold Data"; 
    int startix = b.length(); 
    int len = boldData.length(); 
    b.append(boldData); 
    b.setSpan(new StyleSpan(Typeface.BOLD), startix, startix + len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
    tv.setText(b); 
+0

唯一的問題是,我不能只是追加粗體文字,我d必須用我的第一個textview中的粗體文本替換我的第二個textview中的粗體文本,並在我的第三個textview中顯示 – TylerNormal 2014-10-04 20:41:43

+0

如果我可以做這樣的代碼... String str2 = text2.getText(fromHtml)。的toString(); 它可能工作 – TylerNormal 2014-10-04 20:44:15