2012-04-14 27 views
9

Tôi đang sử dụng một hình động dịch để di chuyển một quả trứng (ImageButton) bên ngoài thùng carton (ImageView), nhưng nó liên tục cắt, vì vậy tôi xem xét tất cả các stackoverflow để tìm một giải pháp, nhưng sau khi thử để thực hiện tất cả các giải pháp, nó vẫn bị cắt bớt.clipChilren được đặt thành false vẫn cắt

bất cứ ai có thể làm sáng tỏ vào lý do tại sao tôi vẫn được cắt, đây là XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:gravity="top" 
    android:clipChildren="false" 
    android:clipToPadding="false" 
    android:layout_height="match_parent"> 
<ImageButton 
    android:id="@+id/imageButton1" 
    android:background="@drawable/transparentblackbackground" 
    android:layout_below="@+id/relativeLayout1" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:clipChildren="false" android:clipToPadding="false" > 
</ImageButton> 

<!-- Total Carton for Animation --> 
<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="440dp" 
    android:id="@+id/opencarton" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:clipChildren="false" 
    android:clipToPadding="false" > 



    <!-- The carton that holds the eggs --> 
    <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="260dp" 
     android:id="@+id/opencarton" 
     android:layout_height="512dp" 
     android:layout_centerInParent="true" 
     android:clipChildren="false" 
     android:clipToPadding="false"> 

     <ImageButton 
      android:id="@+id/blackbgnd" 
      android:background="@drawable/clearbackground" 
      android:layout_height="600dp" 
      android:layout_width="400dp" 
      android:clipChildren="false" 
      android:clipToPadding="false" 
      android:gravity="center"> 
     </ImageButton> 

     <!-- Top of Carton image --> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/topcomponent" 
      android:src="@drawable/topofcarton" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentRight="true" 
      android:clipChildren="false" 
      android:clipToPadding="false"> 
     </ImageView> 

     <!-- First Row Of eggs goes here in future -->  
     <ImageButton android:clipChildren="false" android:clipToPadding="false" android:layout_height="158dp" android:id="@+id/egg1" android:background="@drawable/goldegg" android:layout_width="79dp" android:layout_alignTop="@id/topcomponent" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" android:layout_marginTop="3dp"></ImageButton> 
     <ImageButton android:clipChildren="false" android:clipToPadding="false" android:layout_height="158dp" android:id="@+id/egg2" android:background="@drawable/goldegg" android:layout_width="79dp" android:layout_alignTop="@id/topcomponent" android:layout_alignParentLeft="true" android:layout_marginLeft="90dp" android:layout_marginTop="3dp"></ImageButton> 
     <ImageButton android:clipChildren="false" android:clipToPadding="false" android:layout_height="158dp" android:id="@+id/egg3" android:background="@drawable/goldegg" android:layout_width="79dp" android:layout_alignTop="@id/topcomponent" android:layout_alignParentLeft="true" android:layout_marginLeft="170dp" android:layout_marginTop="3dp"></ImageButton> 

     ................ 

</RelativeLayout> 
</RelativeLayout> 
</RelativeLayout> 

Trả lời

10

Ok, tôi lãng phí khoảng một giờ giải quyết một vấn đề tương tự.

Tôi cho rằng bạn đang làm động đối tượng "thủ công" bằng cách sử dụng một số phép biến đổi hoặc như vậy và gọi postInvalidateDelayed() hoặc tương tự như buộc làm mới.

Vấn đề là (đối với tôi) mà bạn cần gọi nó ở chế độ xem trên cùng, bởi vì nếu không khung vẽ sẽ tự động được cắt bớt thành mục bạn đang làm mới. Vì vậy, việc gọi invalidate() (hoặc tương tự) ở chế độ xem trên cùng sẽ khiến bạn vẽ lại với canvas không bị cắt bớt quá nhiều.

Trong trường hợp của bạn, tôi nhận thấy bạn có hai id "opencarton" được xác định, có lẽ bạn nên làm mới cái đầu hoặc RelativeLayout hàng đầu.

+4

cảm ơn vì đã chỉ ra điều này, đã tiết kiệm thời gian của tôi! –

+1

Cảm ơn bạn rất nhiều, nhận xét của bạn đã lưu cho tôi rất nhiều thời gian. – Crash

Các vấn đề liên quan