2015-09-08 3 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> 

И код, чтобы переместить круг

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

Я использовал ObjectAnimato r для выполнения циклического перехода, но это не было проблемой, поскольку setX или setTranslationX все еще имеют одинаковую ошибку.

ответ

0

У вас, вероятно, есть ошибки в других частях вашего кода, я попытался добиться анимации, которую вы хотите, и без вопросов. Вы можете также попытаться переместить свой вид, используя поля, но я предполагаю, что проблема в другом месте.

+0

Вы были правы, это была не проблема, это было то, что я неправильно обновлял backgroundColor View, я использовал setBackgroundColor, думая, что он обновит заполнение формы, и я думаю, что он его заменял. Получение фона, а затем настройка цвета сделали трюк. Спасибо, что выбрали правильный путь! – Koitt

Смежные вопросы