Вопрос 1:
Хотя я использую guideline
в ConstraintLayout, он вообще не работает, приведенный ниже код не может установить orientation
(почему такого свойства нет?) guideline
, что бесполезно:
constraintLayout {
guideline {
//here, cannot set the orientation of guideline
}
//...
}
Несмотря на то, что приведенный ниже код может установить ориентацию направляющей, у него все еще есть та же проблема с макетом (я не знаю, создана ли направляющая или нет):
constraintLayout {
constraintSet {
create(ID_GUIDELINE, VERTICAL_GUIDELINE)
}
//...
}
Итак, как правильно использовать GuideLines в макете ConstraintLayout в Anko?
Вопрос 2:
ConstraintLayou в другом ConstraintLayout может иметь неожиданное поведение при использовании Fragment
.
Я использую ConstraintLayout(с именем A) в Activity
и ConstraintLayout(B) в Fragment
, затем добавляю или заменяю B в/с < strong>A, результат показывает, что ширина B всегда неверна.
Однако, если в B есть RecyclerView
, и установите layoutParams
в B, как показано ниже:
layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
то работает корректно, без RecyclerView
а только другие виджеты, типа buttons/textviews/imageviews
, видно что ширина B очень узкая.
Конечно, я могу изменить макет A на FrameLayout
, но это не то, что мне нужно, так почему и как это сделать? Спасибо за ответ!
Кроме того, я открыл проблему в библиотеке Anko kotlin здесь: https://github.com/Kotlin/anko/issues/579 и код:
// A in Activity
constraintLayout {
fitsSystemWindows = true
id = A
}
supportFragmentManager.beginTransaction().replace(A, fragmentB).commit()
//supportFragmentManager.beginTransaction().add(A, fragmentB).commit()
// B in Fragment
constraintLayout {
fitsSystemWindows = true
layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
}