[英]Dynamically changing the text of a TextView
我有一个TextView,它以默认文本值开始,然后根据用户的操作,单击按钮时,TextView的文本需要在代码中进行更改。 看起来很简单,但是我遇到了问题。
当前,正在发生的情况是,当用户单击触发按钮以触发文本更改时,新文本只是被添加到原始TextView下的屏幕上,而不仅仅是简单地更改文本值。 几乎就像是要添加一个新的TextView一样。
这是执行此操作的代码:
lblSlogan.Invalidate();
lblSlogan.SetText(currentSlogan.Slogan, TextView.BufferType.Normal);
我也这样尝试过,没有运气:
lblSlogan.Invalidate();
lblSlogan.Text = currentSlogan.Slogan;
lblSlogan是一个TextView。 我想念什么吗? 我也尝试了不使用invalidate()的情况,但这也没有改变。
谢谢。
-编辑-
请务必注意,我在Xamarin中使用C#。 不是Java。 这是我点击按钮的方法。 这是发生TextView更改的地方。
btnOk.Click += delegate(object sender, EventArgs e)
{
if (answerBox.Text.ToLower() == currentSlogan.Company.ToLower())
{
// correct answer
currentUserScore += currentSlogan.Points;
currentSlogan.Answered = true;
DatabaseBuffer.MarkSloganAnsweredAndUpdateScore(currentSlogan, currentUserScore);
currentSlogan = DatabaseBuffer.GetNextUnansweredSlogan(currentSlogan.ID);
}
if (currentUserScore >= pointsToPass)
{
// user has beaten level
}
else
{
lblSlogan.SetText(currentSlogan.Slogan, TextView.BufferType.Normal);
answerBox.Text = "";
}
};
我不明白为什么要在TextView上调用方法invalidate()
,否则,这样的简单代码应该可以工作(在onCreate()
方法中添加此代码):
setContentView(R.layout.main);
TextView lblSlogan = (TextView) findViewById(R.id.lblSlogan);
Button btnChangeSlogan = (Button) findViewById(R.id.btnChangeSlogan);
btnChangeSlogan.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
lblSlogan.setText("Put your new text here");// cal setText() in the onclick method when ever you want to change the text
}
});
我认为您的问题是这样的:
answerBox.Text.ToLower() == currentSlogan.Company.ToLower()
您应该使用“等于”,而不是“ ==“。
(answerBox.Text.ToLower()).Equals( currentSlogan.Company.ToLower())
这里有几点。
我个人使用Xamarin提供的内置抽象方法。 他们倾向于给我更一致的结果。 您可以简单地将新值分配给Textview的.Text属性。 IE
textView.Text = newValue;
在C#中,您不需要使用.Equals运算符进行字符串比较。 严格来说,这是Java的要求。 参见此[link]( 为什么要使用String.Equals over ==? )。
将侦听器分配给按钮,然后在该侦听器中使用setText()方法添加文本(或通过appendText()进行添加。)
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
text.setText("This is new text");
}
});
您可以在此处添加“动态查看”文本。
var aLabel = new TextView (this);
aLabel.Text = "Hello Text!!!";
aLabel.SetTextSize (Android.Util.ComplexUnitType.Dip, 15f);
RelativeLayout ll = new RelativeLayout(this);
ll.AddView(aLabel);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.