2012-05-10 193 views
0

這個想法是創建一個接口與兩個「按鈕」是可拖動安卓拖放與XML佈局

我不想使用Canvas(內存中的位圖問題和重繪所有內容等),所以我決定使用帶有ImageView的XML Layout作爲按鈕。

一鍵是中央 _vertical | ,第二個中央(例如)。第一個工作正常,因爲它應該,但第二個有雙方(左側和右側)奇怪的利潤和按鈕不能拖動。我還檢查其他位置:

  1. 左上角 - 正確
  2. 左下角 - 沿x軸移動唯一可能的...
  3. 上/下/右中 - 在y軸移動唯一可能axis

當然,對於任何具有這些屬性的按鈕來說,情況都是一樣的,不僅僅是「第二個」。代碼是每個按鈕都相同。 這真的很奇怪,但我想這是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); 

位置與事件計算.getX()event.getY()

Android SDK 2.2的版本。我檢查了模擬器和電話 - 結果相同。

你有什麼想法嗎?在此先感謝:)

回答

1

發現錯誤。萬一有人有同樣的問題:

當使用XML佈局和阻力&下降,請確保您設置適當的XML 重力財產。我完全刪除它,並決定在活動開始時設置邊距。

乾杯!