Я пытаюсь создать пользовательский переключатель (с нуля). Я показываю круг над линией, и когда нажимается изображение, я использую 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 все еще имеют одинаковую ошибку.
Вы были правы, это была не проблема, это было то, что я неправильно обновлял backgroundColor View, я использовал setBackgroundColor, думая, что он обновит заполнение формы, и я думаю, что он его заменял. Получение фона, а затем настройка цвета сделали трюк. Спасибо, что выбрали правильный путь! – Koitt