为 HorizontalScrollView 设置约束
Set up constraints for HorizontalScrollView
我有如下布局。
<?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 开发者,请耐心等待 ;)
您可以将 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
的容器占用所有可用的水平 space.
事实上,根本不需要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>
我有如下布局。
<?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 开发者,请耐心等待 ;)
您可以将 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
的容器占用所有可用的水平 space.
事实上,根本不需要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>