アイデアは、ドラッグ可能な2 つの「ボタン」を備えたインターフェイスを作成することでした。
Canvas を使用したくなかったので (メモリ内のビットマップの問題やすべての再描画など)、ImageView をボタンとして使用する XML レイアウトを使用することにしました。
1 つのボタンが中央にあります_vertical | left、2 番目の中央(たとえば)。最初のものは正常に動作しますが、2 つ目は両側 (左右) に奇妙なマージンがあり、ボタンをドラッグできません。他のポジションもチェックしました:
- 左上隅 - 正しい
- 左下隅 - x 軸でのみ移動可能...
- 上/下/中央右 - y 軸でのみ移動可能
もちろん、「2番目のボタン」だけでなく、これらのプロパティを持つすべてのボタンで状況は同じです。コードはすべてのボタンで同じです。本当に奇妙ですが、XML レイアウトの問題だと思います。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="left"
android:gravity="center_vertical|left" >
<ImageView
android:id="@+id/leftChar"
android:src="@drawable/ukreska"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<ImageView
android:id="@+id/rightChar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/uotwarte" />
</LinearLayout>
</RelativeLayout>
ボタンの位置は、レイアウト マージンで設定されます。
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(new ViewGroup.MarginLayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
lp.setMargins(X, Y, 0, 0);
img.setLayoutParams(lp);
位置はevent.getX()とevent.getY( ) で計算されます
Android SDK 2.2 のバージョン。エミュレータと電話で確認しましたが、結果は同じでした。
何か考えはありますか?前もって感謝します : )