1

我可以onCreate使用下面的代码设置 ActionBar。

ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setIcon(android.R.color.transparent);
actionBar.setBackgroundDrawable(getResources().getDrawable(
                R.drawable.myDrawable1));
actionBar.setTitle("");

所以会发生什么是用户单击一个按钮并调用下面的方法来显示一个列表视图。在这里,我成功地将操作栏的背景更改为 R.id.myDrawable2。

public void displayList() {

    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setIcon(android.R.color.transparent);
    actionBar.setBackgroundDrawable(getResources().getDrawable(
            R.drawable.myDrawable2));
    // actionBar.setTitle("Some Nonempty text"); // If I uncomment this line then action bar background is correctly displayed.

    // Display listview
    .
    .
    .
}

现在,用户单击列表视图的一个项目并启动另一个活动。当用户回到以前的活动时会出现问题。回来时,操作栏背景消失了。它是纯白色的。

当用户回来时,用户应该会看到该列表视图。所以我调用上面的方法来显示列表视图并将操作栏背景更改为myDrawable2. 但是在这里,操作栏背景被重置为纯白色。

注意:如果我将操作栏标题设置为一些非空文本,那么它将以正确的背景显示。

我找到了一种临时解决方法,可以在将文本设置为某些文本后立即将其重置为“”。但这不是一个适当的解决方案。

谁能告诉我设置背景有什么问题?

编辑:我注意到只有从下一个活动回来时才会出现这个问题。如果用户在同一活动中,那么我可以毫无问题地更改背景。例如,当用户单击取消隐藏列表时,我可以更改操作栏背景。当用户单击按钮以显示列表视图时,再次能够做到这一点。

4

0 回答 0