我想在现有TextView上添加一个简单的“Read more”/“Read less”按钮组合另一个..
我这样做了:
this.announcer_description = (TextView) findViewById(R.id.announcer_description);
this.readmore = (TextView) findViewById(R.id.readmore);
this.readmore.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (readmore.getText().equals("Read More"))
{
announcer_description.setText("");
announcer_description.setText(currentAnnouncer.getDescription_fr());
readmore.setText("");
readmore.append("Read less");
}
else if (readmore.getText().equals("Read less"))
{
announcer_description.setText("");
announcer_description.setText(shortDesc);
readmore.setText("");
readmore.append("Read more");
}
}});
我的“announcer_description”TextView初始化为“Read more”..但这不起作用.. 我发现使用Read more和Read Less的唯一方法是在这个OnClickListener中嵌套一些OnClickListener。
有人确实有想法吗?
答案 0 :(得分:1)
简单"Read More"
不等于"Read more"
,存在大写差异,因此您的代码永远不会被执行。
您应该在字符串中设置不会更改的值,例如"Read More"
,以帮助防止这些类型的错误,最好在strings.xml
中。
创建一个类范围变量,在onCreate()
中设置:
String readMoreString;
...
readMoreString = getResources().getText(R.string.read_more);
简化的OnClickListener:
this.readmore.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (readmore.getText().toString().equals(readMoreString))
{
announcer_description.setText(currentAnnouncer.getDescription_fr());
readmore.setText(readLessString);
}
else
{
announcer_description.setText(shortDesc);
readmore.setText(readMoreString);
}
}
});
另请注意我如何删除对setText()
的冗余调用,您无需使用setText("")
“清除”以前的TextView。