ActionbarBackground というカスタム Drawable クラスを作成しました。このクラスは、Actionbar の背景に特別な描画動作を実装します。タブレットでアプリをテストすると、次の不具合が発生します。
アプリが起動すると、アクションバーのコンテンツが背景の下に描画され、アクティビティ全体のコンテンツが押し下げられます。
例:
画面に触れると、再描画が行われ、アクションバーの内容が完全に消えます。その後、Activity の内容が上にシフトします。
例:
この問題は 2 つのアクティビティで発生しますが、その理由はわかりません。XML リソースからカスタム ドローアブルを提供しようとしたところ、すべて正常に機能しましたが、この背景にはプログラムによる描画が必要です。
アクションバーは次のように設定されています。
this.getActionBar().setDisplayShowTitleEnabled(false);
this.getActionBar().setIcon(R.drawable.actionbar_icon_and_title);
this.getActionBar().setBackgroundDrawable(new ActionbarBackground(this));
通常、ActionbarBackground の実装は次のようになります。
@Override
public void draw(Canvas canvas)
{
// Do special drawing on canvas object
}
@Override
public int getOpacity() {
return PixelFormat.OPAQUE;
}
@Override
public void setAlpha(int alpha) {
// Do nothing
}
@Override
public void setColorFilter(ColorFilter filter) {
// Do nothing
}
なぜこれが起こっているのか、それを修正する方法はありますか?