我有一个TextView,它以默认文本值开头,然后根据用户的操作,单击按钮时TextView的文本需要在代码中更改。看起来很简单,但我遇到了问题。
目前,正在发生的事情是,当用户点击触发文本更改的提交按钮时,新文本只是添加到原始TextView下的屏幕,而不是仅仅更改文本值。这几乎就像它正在添加一个新的TextView。
以下是执行此操作的代码:
lblSlogan.Invalidate();
lblSlogan.SetText(currentSlogan.Slogan, TextView.BufferType.Normal);
我也是这样试过的,没有运气:
lblSlogan.Invalidate();
lblSlogan.Text = currentSlogan.Slogan;
lblSlogan是一个TextView。我错过了什么吗?我也尝试过没有invalidate(),但也没有改变。
感谢。
- 编辑 -
重要的是要注意我正在使用C#和Xamarin。不是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 = "";
}
};
答案 0 :(得分:2)
我不明白为什么要在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
}
});
答案 1 :(得分:1)
我认为你的问题是:
answerBox.Text.ToLower() == currentSlogan.Company.ToLower()
你应该使用“等于”,而不是“==”。
(answerBox.Text.ToLower()).Equals( currentSlogan.Company.ToLower())
答案 2 :(得分:1)
这里有几点。
我个人使用Xamarin提供的内置抽象方法。他们倾向于给我更一致的结果。您只需将新值分配给Textview的.Text属性即可。 IE
textView.Text = newValue;
在C#中,您不需要使用.Equals运算符来进行字符串比较。这完全是Java的要求。见[link](Why would you use String.Equals over ==?)。
答案 3 :(得分:0)
将侦听器分配给按钮,并在该侦听器中使用setText()方法(或appendText()添加文本以进行追加..)
findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
text.setText("This is new text");
}
});
答案 4 :(得分:0)
在这里,您可以动态添加文本视图。
var aLabel = new TextView (this);
aLabel.Text = "Hello Text!!!";
aLabel.SetTextSize (Android.Util.ComplexUnitType.Dip, 15f);
RelativeLayout ll = new RelativeLayout(this);
ll.AddView(aLabel);