0

这个想法是创建一个带有两个可拖动的“按钮”的界面。

我不想使用 Canvas(内存中的位图和重绘所有内容等问题),所以我决定使用带有 ImageView 作为按钮的 XML 布局。

一键居中_vertical | left,第二个中央(例如)。第一个可以正常工作,但第二个在两侧(左右)都有奇怪的边距,并且无法拖动按钮。我还检查了其他职位:

  1. 左上角 - 正确
  2. 左下角 - 只能在 x 轴上移动...
  3. 顶部/底部/中心右侧 - 只能在 y 轴上移动

当然,对于具有这些属性的任何按钮,情况都是相同的,而不仅仅是“第二个”。每个按钮的代码都是相同的。这真的很奇怪,但我猜这是XML Layout的问题:

<?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重力属性。我完全删除了它,我决定在活动开始时设置边距。

干杯!

于 2012-05-12T18:21:30.623 回答