0

アイデアは、ドラッグ可能な2 つの「ボタン」を備えたインターフェイスを作成することでした。

Canvas を使用したくなかったので (メモリ内のビットマップの問題やすべての再描画など)、ImageView をボタンとして使用する XML レイアウトを使用することにしました。

1 つのボタンが中央にあります_vertical | left、2 番目の中央(たとえば)。最初のものは正常に動作しますが、2 つ目は両側 (左右) に奇妙なマージンがあり、ボタンをドラッグできません。他のポジションもチェックしました:

  1. 左上隅 - 正しい
  2. 左下隅 - x 軸でのみ移動可能...
  3. 上/下/中央右 - 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 のバージョン。エミュレータと電話で確認しましたが、結果は同じでした。

何か考えはありますか?前もって感謝します : )

4

1 に答える 1

1

間違いを見つけました。誰かが同じ問題を抱えている場合:

XML レイアウトとドラッグ アンド ドロップを使用する場合は、適切な XMLグラビティプロパティを設定してください。私はそれを完全に削除し、Activity の先頭にマージンを設定することにしました。

乾杯!

于 2012-05-12T18:21:30.623 に答える