Я следую этому очень короткому учебнику здесь , и я хотел бы вызвать различные представления, основанные на каком-либо действии.но я не могу даже получить ссылку на ConstraintLayoutStates.Позвольте мне показать вам, что у меня есть:
Зависимость: реализация 'com.android.support.constraint: layout-layout: 2.0.0-alpha2'
У меня есть исходный файл iзагружаю, который содержит состояния макета.это выглядит так:
main_states_layout.xml:
<ConstraintLayoutStates
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<State
android:id="@+id/start"
app:constraints="@layout/start_layout"/>
<State
android:id="@+id/loading"
app:constraints="@layout/activity_cl_states_loading"/>
<State
android:id="@+id/end"
app:constraints="@layout/activity_cl_states_end"/>
</ConstraintLayoutStates>
, когда я вхожу в свою деятельность, чтобы попытаться сослаться на ConstraintLayoutStates, я либо не знаю как, либо он не будет компилироваться, но android studioговорит, что не может найти ссылку на него.какие-нибудь идеи?
ОБНОВЛЕНИЕ: Я пытался использовать мой собственный constraintLayout и установить описание, как упомянуто, но представление будетне обновлять: вот что у меня есть:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
stateConstraintLayout.loadLayoutDescription(R.xml.main_states_layout)
myButton.setOnClickListener {
stateConstraintLayout.setState(R.id.start, 110, 3000)
}
}
// здесь все, что я хочу выше, это когда кнопка нажата, вид меняется
позволяет взглянуть на содержимоеиз main_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/stateConstraintLayout"
>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/myButton"
android:text="press me" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintEnd_toEndOf="parent"/>
</android.support.constraint.ConstraintLayout>
и main_states_layout, который находится в папке xml res, выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayoutStates
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<State
android:id="@+id/start"
app:constraints="@layout/start_layout"/>
<State
android:id="@+id/loading"
app:constraints="@layout/loading_layout"/>
</ConstraintLayoutStates>
и start_layout просто показывает текст с зеленым фоном (но этоникогда не появляется):
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@color/colorPrimary"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My started layout"
android:textSize="21sp"
android:textColor="@android:color/holo_orange_light"
android:id="@+id/appCompatTextView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"/>
</android.support.constraint.ConstraintLayout>
когда кнопка нажата, смотрите код, вызываемый в onclicklistener, но ничего не обновляется, почему?