1

我想在现有的 TextView 上添加一个简单的“阅读更多”/“阅读更少”按钮,并结合另一个..

我这样做了:

 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 ..

有人有想法吗?

4

1 回答 1

2

根本"Read More"不等于"Read more",存在大小写差异,因此您的代码永远不会执行。

您应该在 String 中设置不变的值,例如"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("").

于 2012-09-11T16:31:39.633 回答