2

以前は、ActionBar を使用しないアクティビティがありました。レイアウトは、RelativeLayout単に親と一致する幅と高さの です。イベントでこのコードの一部を使用して、ユーザーがボタンをドラッグできるようにしました。onTouch

MarginLayoutParams marginParams = new MarginLayoutParams(v.getLayoutParams());
int left = (int) event.getRawX() - (v.getWidth() / 2);
int top  = (int) event.getRawY() - (v.getHeight());
marginParams.setMargins(left, top, 0, 0);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
v.setLayoutParams(layoutParams);

ボタンは指のすぐ下に移動し、画面上の位置に正しく配置されます。ただし、ActionBar を有効にすると、突然クリックすると、ボタンが指の下に ~30 ピクセル移動します。この動作を説明するために、私が以前持っていたもの (左側) と現在起こっていること (右側) を次に示します。

これは、ActionBar がすべてを独自の高さで移動させるためだと思います。もちろん、私はこれが起こらないようにしたくない、または少なくともこれを修正したくないので、次のようにします。

  • setMargins()ハードコーディングされた値を使用せずに、ActionBar の実際のサイズに従って配置をシフトするにはどうすればよいですか?

  • そもそもActionBarがすべてをシフトしないようにするにはどうすればよいですか? 別の言い方をすれば、ボタンが ActionBar の一番下の行に対して、指が指している場所に直接配置されるようにするにはどうすればよいですか?

これは私が欲しいものです:

4

1 に答える 1