Пользовательское представление Android наследует все стили и атрибуты от родительского - PullRequest
0 голосов
/ 29 октября 2018

Если вы создаете пользовательское представление, расширяющее родительское представление, как вы можете наследовать все стили и атрибуты от родительского представления?

Например, если я объявляю SeekBar в xml и стилизую его, все работает нормально. Если я расширю это представление без дополнительных методов, все стили и форматирование по умолчанию уйдут.

Оригинальный XML. Стиль здесь работает, как и ожидалось:

        <SeekBar
        android:id="@+id/seekBar"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/margin_default"
        android:layout_marginEnd="@dimen/margin_default"
        android:thumb="@drawable/ic_custom_thumb"/>

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

class CustomSeekBar : SeekBar {
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)}

И xml:

    <com.namespace.CustomSeekBar
    android:id="@+id/seekBar"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="@dimen/margin_default"
    android:layout_marginEnd="@dimen/margin_default"
    android:thumb="@drawable/ic_custom_thumb"/> 

Что мне нужно сделать, чтобы этот CustomSeekBar выглядел и функционировал точно так же, как и по умолчанию? Попытка создать настраиваемое представление, которое добавляет некоторые функциональные возможности без изменения стиля / темы оформления по умолчанию и тому подобного. Нужно ли перестраивать все стили и темы по умолчанию или есть способ просто наследовать их?

1 Ответ

0 голосов
/ 29 октября 2018

использовать родителя вместо стиля в пользовательской панели поиска:

<com.namespace.CustomSeekBar
    android:id="@+id/seekBar"
    parent="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="@dimen/margin_default"
    android:layout_marginEnd="@dimen/margin_default"
    android:thumb="@drawable/ic_custom_thumb"/> 
...