我的布局如下。
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:maxHeight="50dp"
tools:context=".navigation.NavigationFragment">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/horizontal_scroll_container"
app:layout_constraintLeft_toLeftOf="parent">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1XXX"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button3"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button4"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button5"
style="?android:attr/borderlessButtonStyle"/>
</LinearLayout>
</HorizontalScrollView>
</FrameLayout>
<FrameLayout
android:id="@+id/search_layout"
android:layout_width="58dp"
android:layout_height="match_parent"
android:background="@color/colorAccent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toRightOf="@id/horizontal_scroll_container"/>
</android.support.constraint.ConstraintLayout>
我想要实现的是使滚动视图在粉红色的方块下滚动,以显示最新按钮(在这种情况下为Button 5
)。
您能帮我找出我做错了什么吗?我试图将约束放在horizontal_scroll_container
和HorizontalScrollView
中,但似乎没有任何作用。
P.S。我不是Android开发人员,请耐心等待;)
答案 0 :(得分:2)
您可以做的是将FrameLayout
约束在search_layout
的右侧,这样它们就不会重叠。这样最后一个Button
就会完全可见。
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/horizontal_scroll_container"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/search_layout">
width
更改为0dp
(MATCH_CONSTRAINT
),因此ScrollView
的容器占用了所有可用的水平空间。
实际上,根本不需要FrameLayout
容器。 HorizontallScrollView
是FrameLayout
的子类,因此不需要嵌套它们。通过将HorizontalScrollView
作为ConstraintLayout
的直接子代可以实现相同的结果:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:maxHeight="50dp"
tools:context=".navigation.NavigationFragment">
<HorizontalScrollView
android:id="@+id/horizontal_scroll"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/search_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button3"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button4"
style="?android:attr/borderlessButtonStyle"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button5"
style="?android:attr/borderlessButtonStyle"/>
</LinearLayout>
</HorizontalScrollView>
<FrameLayout
android:id="@+id/search_layout"
android:layout_width="58dp"
android:layout_height="match_parent"
android:background="@color/colorAccent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toRightOf="@id/horizontal_scroll"/>
</android.support.constraint.ConstraintLayout>