Android - пользовательский вид ConstraintLayout не показывает предварительный просмотр в андроид студии - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть пользовательский вид, который выглядит следующим образом.это на самом деле пользовательский constraintLayout, если это важно.хотя может быть любая группа просмотра:

class MyButtonView : ConstraintLayout {

    constructor(p0: Context) : super(p0)
    constructor(p0: Context, p1: AttributeSet?) : super(p0, p1)
    constructor(p0: Context, p1: AttributeSet?, p2: Int) : super(p0, p1, p2)


    init {
        initView()
    }

    private fun initView() = inflate(context, R.layout.my_custom_view, this)
}

Теперь файл my_custom_view.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout
    android:id="@+id/cl_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateLayoutChanges="true"
    tools:visibility="visible">

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="#EFEFEF"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.constraint.ConstraintLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="center"
            android:text="@string/my_name"
            android:textAppearance="@style/AsphaltTitleAndButtonTextStyle"
            android:textColor="#555555"
            android:textSize="14sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:ignore="RelativeOverlap,RtlHardcoded" />

        <ImageView
            android:id="@+id/iv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="4dp"
            app:layout_constraintBottom_toBottomOf="@id/tv"
            app:layout_constraintRight_toLeftOf="@id/tv"
            app:layout_constraintTop_toTopOf="@id/tv"
            app:srcCompat="@drawable/icon" />

    </android.support.constraint.ConstraintLayout>

</android.support.constraint.ConstraintLayout>

Сейчаспосмотрите, как я его использую:

 <com.mypackage.example.MyButtonView
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="?attr/selectableItemBackground"
        android:visibility="gone"
        tools:visibility="visible" />

во время выполнения все работает нормально, поэтому я знаю, что все настроено нормально.Это только в окне предварительного просмотра Android Studio 3.2.1 пользовательский вид не показывает предварительный просмотр. просто показывает имя пакета .Как я могу получить предварительный просмотр, чтобы показать.Вот что я пробовал до сих пор:

class MyButtonView : ConstraintLayout {

constructor(p0: Context) : super(p0){initView()}
constructor(p0: Context, p1: AttributeSet?) : super(p0, p1){initView()}
constructor(p0: Context, p1: AttributeSet?, p2: Int) : super(p0, p1, p2){initView()}


init {
    initView()
}

private fun initView() = inflate(context, R.layout.my_custom_view, this)
}
...