这个想法是创建一个带有两个可拖动的“按钮”的界面。
我不想使用 Canvas(内存中的位图和重绘所有内容等问题),所以我决定使用带有 ImageView 作为按钮的 XML 布局。
一键居中_vertical | left,第二个中央(例如)。第一个可以正常工作,但第二个在两侧(左右)都有奇怪的边距,并且无法拖动按钮。我还检查了其他职位:
- 左上角 - 正确
- 左下角 - 只能在 x 轴上移动...
- 顶部/底部/中心右侧 - 只能在 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 的版本。我已经检查了模拟器和手机 - 结果相同。
你有什么主意吗?提前致谢 : )