我希望你能帮助我,我正在制作一个片段布局,屏幕底部有一个固定按钮,但是当片段显示时,按钮隐藏在android导航栏下面(黑色的带有家,后退和菜单按钮)。这是要膨胀的片段布局的代码:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/questionFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ottegui.ottegui_android.Fragments.QuestionFragment">
<ScrollView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/linearLayoutQuestion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textview_q_title"
style="?android:textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:lineSpacingMultiplier="1.2"
android:padding="16dp"
android:text="Title"
android:textColor="#333"
android:textSize="16sp" />
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:orientation="vertical" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:id="@+id/linearLayoutQuestionButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">
<Button
android:id="@+id/button_continue"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:background="?attr/colorPrimary"
android:text="Next Question"
android:textColor="#FFF"
android:textSize="16sp" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
其中的RadioGroup在Fragment类上动态填充。 TextView也是从Fragment类设置的。
这是导航下按钮的图像,你只能看到一个紫色的边框,我希望它在片段的底部。我认为也许ConstraitLayout是一个糟糕的选择,因为在一些教程中我看到总是使用FrameLayout(我开始构建我自己,这就是我使用ConstraitLayout的原因)
答案 0 :(得分:2)
ConstraintLayout
不是“icky”,不再是其他类型的布局。为了您的目的,您必须做两件事:
使用ConstraintLayout
的直接子项创建完整的边到边双向链。
根据您的需要声明这些孩子的身高属性。
xml中有两个ConstraintLayout
的孩子,ScrollView
名为content
,LinearLayout
名为linearLayoutQuestionButton
。每个布局都连接到左侧和右侧的parent
,而前者连接到顶部的parent
,后者连接到底部的parent
。但是,他们没有彼此连接!通过添加
app:layout_constraintBottom_toTopOf="@id/linearLayoutQuestionButton"
到content
和
app:layout_constraintTop_toBottomOf="@id/content"
到linearLayoutQuestionButton
。
然后,您希望第一个孩子(content
)填充除第二个孩子(linearLayoutQuestionButton
)的高度之外的所有可用高度。这样做的正确值既不是match_parent
也不是wrap_content
,但有些违反直觉
android:layout_height="0dp"
您的完整布局将如下所示:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/questionFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ottegui.ottegui_android.Fragments.QuestionFragment">
<ScrollView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toTopOf="@id/linearLayoutQuestionButton"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/linearLayoutQuestion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textview_q_title"
style="?android:textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:lineSpacingMultiplier="1.2"
android:padding="16dp"
android:text="Title"
android:textColor="#333"
android:textSize="16sp" />
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:orientation="vertical" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:id="@+id/linearLayoutQuestionButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/content">
<Button
android:id="@+id/button_continue"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:background="?attr/colorPrimary"
android:text="Next Question"
android:textColor="#FFF"
android:textSize="16sp" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
答案 1 :(得分:0)
我猜测布局,你来自iOS开发?我建议摆脱icky约束布局并与亲戚一起去 将滚动视图与顶部对齐,滚动视图下方的按钮布局与底部对齐。