【发布时间】:2014-10-02 19:32:54
【问题描述】:
有没有办法将我的数组中的粗体文本转移到我的第三个文本视图中?我已经通过为每个文本视图执行按钮单击将它从 XML 转移到我的第一个和第二个文本视图。我试图让我的第三个文本视图用粗体动物替换句子中的粗体字。我的第三个 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();`
只返回第二个文本视图中的文本,但它不像我需要的那样粗体。在我解决这个问题后,我希望我可以使用这条线
str = str.replaceAll("<![CDATA[<b></b>]]>", str2);
用新的粗体动物替换旧的粗体文本。
非常感谢您的帮助
~TylerNormal
【问题讨论】:
标签: java android string replace bold