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