2012-05-21 67 views
0

所以即時通訊工具在我的視圖上按下按鈕點擊區域時出現問題。我目前有一個非常簡單的視圖,在任何動畫之前,視圖的寬度被限制在其中包含的按鈕的大小,儘管我告訴在寬度和高度都是fill_parent。安卓按鈕在動畫後不可點擊

我有正確使用setClipChildren(false)工作的動畫繪圖,但仍然停止按鈕被點擊。我也正確地移動了實際按鈕的視圖,因爲當其中一個按鈕(我在此動畫中有5個獨立移動)直接移動到初始起始位置上方時,它可以被點擊並且我能夠正確接收。

這裏是使用最外面的視圖代碼IM(我有2個用於模擬這種觀點將被添加到後面一個較大的項目):

<?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" 
     android:orientation="vertical" > 

     <com.tests.FancyBottomTab 
      android:id="@+id/fancyBottomTab1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="5dp" 
      android:gravity="center_horizontal" 
      android:clipChildren="false"> 

     </com.tests.FancyBottomTab> 

    </RelativeLayout> 

那麼這裏有什麼FancyBottomTab使用作爲其佈局的xml:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal" 
     android:orientation="vertical" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="5dp" 
      android:background="@drawable/b1" 
      android:paddingBottom="5dp" /> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="5dp" 
      android:background="@drawable/b2" 
      android:paddingBottom="5dp" /> 

     <Button 
      android:id="@+id/button3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="5dp" 
      android:background="@drawable/b3" 
      android:paddingBottom="5dp" /> 

     <Button 
      android:id="@+id/button4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="5dp" 
      android:background="@drawable/b4" 
      android:paddingBottom="5dp" /> 

     <Button 
      android:id="@+id/button5" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="5dp" 
      android:background="@drawable/b5" 
      android:paddingBottom="5dp" /> 

     <Button 
      android:id="@+id/fancyRedButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:background="@drawable/fancy_red_button" 
      android:visibility="visible" /> 

    </RelativeLayout> 

UPDATE:只是假設動畫在寬度100dp的semicricle圖案和按鈕均勻地間隔開並且視圖正確移動。希望這會清除一些事情並幫助找到解決方案。

更新再次:好的,這個時候有人應該能夠幫助我弄清楚什麼是錯誤的,我編輯了背景,以便在包含按鈕的RelativeLayout中的on是半透明的(下圖中的灰色) ,然後RelativeLayout外部的背景是白色的。現在外的RelativeLayout稍後必須保持佈局的目的相對佈局,但在這裏被用於它的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" 
     android:background="@color/white" 
     android:orientation="vertical" > 


     <com.dobango.tests.FancyBottomTab 
      android:id="@+id/fancyBottomTab1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="5dp" 
      android:clipChildren="false" 
      android:gravity="center_horizontal" > 

     </com.dobango.tests.FancyBottomTab> 

    </RelativeLayout> 

下面是與添加色素的屏幕截圖應該十分清楚,什麼是錯了,但我根本無法看到它。

enter image description here

+0

你所有的按鈕是堆疊的? – Ronnie

+0

在相對佈局中,在你的xml中使用相對定位來放置你的小部件:layout_below,above,toLeftOf等。 – Snicolas

+0

是的,他們都是從相同的位置開始,然後動畫到不同的位置,然後手動放置該視圖,以便它應該接收觸摸事件,但我敢肯定,它正在被剪裁的地方,就像它通常是,直到我加了setClipChildren(false) – Intrivix

回答

0

好了,我不知道爲什麼,這是絕對必要的,以獲得以顯示正確,尤其是因爲我已經說了在XML文件中的同樣的事情,但此行完全解決問題:

view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

如果有人知道爲什麼我不得不把這一行放到我的自定義相對佈局類中,請評論和解釋。謝謝。