2015-09-08 38 views
0

我正嘗試創建一個自定義開關(從頭開始)。我在一行上顯示一個圓圈,點擊視圖時,我使用setX移動該圓圈。但我這樣做,這個時候,圓圈變成了方形,並連續點擊它一直是一個正方形View.setX正在將我的圓形背景轉換爲方形

我必須爲我的自定義視圖

<merge xmlns:android="http://schemas.android.com/apk/res/android"> 

    <FrameLayout 
     android:id="@+id/search_slider_widget" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <View  
      android:id="@+id/search_slider_line"  
      android:layout_width="@dimen/search_slider_line"  
      android:layout_height="@dimen/search_slider_circle"  
      android:background="@drawable/slider_line"></View> 

     <View 
      android:id="@+id/search_slider_circle" 
      android:layout_width="@dimen/search_slider_circle" 
      android:layout_height="@dimen/search_slider_circle" 
      android:layout_gravity="center_vertical" 
      android:background="@drawable/slider_circle"> 
     </View> 
    </FrameLayout> 
</merge> 

這是所使用的背景

圓圈繪製
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <solid android:color="#999999" /> 
    <size 
     android:width="@dimen/search_slider_circle" 
     android:height="@dimen/search_slider_circle" /> 
</shape> 

和代碼移動我使用對象A的圓圈

float x = getResources().getDimensionPixelSize(R.dimen.search_slider_line) - getResources().getDimensionPixelSize(R.dimen.search_slider_circle); 
circleView.setX(x); 

nimator執行循環轉換,但這不是問題,因爲setX或setTranslationX仍然有相同的錯誤

回答

0

您可能在代碼的其他部分有錯誤,我試圖實現您想要的動畫沒有問題。您也可以嘗試使用邊距來移動視圖,但我想這個問題在其他地方。

+0

你說得對,那不是問題,那是我更新了視圖的backgroundColor不正確,我使用setBackgroundColor認爲它會更新形狀填充,我認爲它正在取代它。獲得背景,然後設置顏色的伎倆。感謝您將我安置在正確的道路上! – Koitt