【问题标题】:How do i make my buttons fixed at the top with scroll view?如何使用滚动视图将按钮固定在顶部?
【发布时间】:2018-08-02 20:40:14
【问题描述】:

如何将按钮固定在屏幕顶部,将导航栏固定在屏幕底部?我已经完成了android:layout_alignParentTop="true"android:layout_alignParentBottom="true">

这无济于事,因为当我向上或向下滚动时它们仍然没有跟随。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:background="#393939"
tools:context=".Main2Activity">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<RelativeLayout
    android:id="@+id/back"
    android:layout_width="match_parent"
    android:layout_height="1000dp">

    <RelativeLayout
        android:id="@+id/buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:layout_gravity="center">

        <Button
            android:id="@+id/up_coming"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:background="#333333"
            android:text="Upcoming" />


        <Button
            android:id="@+id/trending_button"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:layout_marginEnd="0dp"
            android:background="#333333"
            android:text="Trending" />

        <Button
            android:id="@+id/now_showing"
            android:layout_width="140dp"
            android:layout_height="44dp"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:background="#6E6E6E"
            android:text="Now Showing" />

    </RelativeLayout>

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="20dp"
        android:layout_marginTop="69dp"
        app:srcCompat="@drawable/fpp3k01riyq01" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="142dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_below="@+id/imageView5"
        android:layout_marginEnd="39dp"
        android:text="Incredibles 2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="194dp"
        android:layout_marginStart="29dp"
        android:text="Avengers: Infinity War"
        android:textColor="#FFFFFF" />



    <ImageView
        android:id="@+id/imageView6"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentStart="true"
        android:layout_alignTop="@+id/imageView5"
        app:srcCompat="@drawable/deadpool2" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="449dp"
        android:layout_toStartOf="@+id/imageView5"
        android:text="Deadpool 2"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignStart="@+id/imageView5"
        android:layout_marginBottom="452dp"
        android:text="Rampage"
        android:textColor="#FFFFFF" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="184dp"
        android:layout_height="200dp"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/imageView5"
        android:layout_marginTop="321dp"
        app:srcCompat="@drawable/rampage_thumbnail" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/main_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_gravity="bottom"
        android:layout_marginBottom="135dp"
        app:itemBackground="@drawable/nav_bar_gradient"
        app:itemIconTint="@color/nav_item_colors"
        app:itemTextColor="@color/nav_item_colors"
        app:menu="@menu/nav_items"></android.support.design.widget.BottomNavigationView>

    <FrameLayout
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:layout_alignBottom="@id/main_nav">


        <android.support.design.widget.BottomNavigationView
            android:layout_width="match_parent"
            android:layout_height="match_parent">



        </android.support.design.widget.BottomNavigationView>

    </FrameLayout>

</RelativeLayout>
</ScrollView>
</RelativeLayout>

【问题讨论】:

  • 修改布局,使组件在 ScrollView 之外,在 scrollview 内只添加您希望的可滚动内容
  • 按钮应该在滚动视图范围之外

标签: android android-layout android-studio android-fragments


【解决方案1】:

根据我的评论: 修改您的布局,使组件在 ScrollView 之外,在 scrollview 内仅添加您希望的可滚动内容

通常就像根 LinearLayout (VERTICAL) 里面一样

  • 然后在高度上添加带有 WRAP 的 HeaderView
  • 然后添加权重为 1 的 ScrollView(这样它会占用布局上的所有剩余空间)
  • 然后在高度上添加带有 WRAP 的 BottomView

在 ScrollView 中添加一个更大的可滚动组件。

这样Heder和Bottom是固定的,可以滚动滚动里面的内容。

【讨论】:

    【解决方案2】:

    您是否尝试将按钮从滚动视图中移除?

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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:background="#393939"
    tools:context=".Main2Activity">
    
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    <RelativeLayout
        android:id="@+id/back"
        android:layout_width="match_parent"
        android:layout_height="1000dp">
    
            <Button
                android:id="@+id/up_coming"
                android:layout_width="140dp"
                android:layout_height="44dp"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:background="#333333"
                android:text="Upcoming" />
        <RelativeLayout
            android:id="@+id/buttons"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true"
            android:gravity="center"
            android:layout_gravity="center">
    
            <Button
                android:id="@+id/trending_button"
                android:layout_width="140dp"
                android:layout_height="44dp"
                android:layout_alignParentEnd="true"
                android:layout_alignParentTop="true"
                android:layout_marginEnd="0dp"
                android:background="#333333"
                android:text="Trending" />
    
            <Button
                android:id="@+id/now_showing"
                android:layout_width="140dp"
                android:layout_height="44dp"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:background="#6E6E6E"
                android:text="Now Showing" />
    
        </RelativeLayout>
    
        <ImageView
            android:id="@+id/imageView5"
            android:layout_width="184dp"
            android:layout_height="200dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:layout_marginEnd="20dp"
            android:layout_marginTop="69dp"
            app:srcCompat="@drawable/fpp3k01riyq01" />
    
        <TextView
            android:id="@+id/textView4"
            android:layout_width="142dp"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_below="@+id/imageView5"
            android:layout_marginEnd="39dp"
            android:text="Incredibles 2"
            android:textColor="#FFFFFF" />
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="140dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentStart="true"
            android:layout_marginBottom="194dp"
            android:layout_marginStart="29dp"
            android:text="Avengers: Infinity War"
            android:textColor="#FFFFFF" />
    
    
    
        <ImageView
            android:id="@+id/imageView6"
            android:layout_width="184dp"
            android:layout_height="200dp"
            android:layout_alignParentStart="true"
            android:layout_alignTop="@+id/imageView5"
            app:srcCompat="@drawable/deadpool2" />
    
        <TextView
            android:id="@+id/textView5"
            android:layout_width="140dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="449dp"
            android:layout_toStartOf="@+id/imageView5"
            android:text="Deadpool 2"
            android:textColor="#FFFFFF" />
    
        <TextView
            android:id="@+id/textView3"
            android:layout_width="140dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignStart="@+id/imageView5"
            android:layout_marginBottom="452dp"
            android:text="Rampage"
            android:textColor="#FFFFFF" />
    
        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="184dp"
            android:layout_height="200dp"
            android:layout_alignParentTop="true"
            android:layout_alignStart="@+id/imageView5"
            android:layout_marginTop="321dp"
            app:srcCompat="@drawable/rampage_thumbnail" />
    
        <android.support.design.widget.BottomNavigationView
            android:id="@+id/main_nav"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentStart="true"
            android:layout_gravity="bottom"
            android:layout_marginBottom="135dp"
            app:itemBackground="@drawable/nav_bar_gradient"
            app:itemIconTint="@color/nav_item_colors"
            app:itemTextColor="@color/nav_item_colors"
            app:menu="@menu/nav_items"></android.support.design.widget.BottomNavigationView>
    
        <FrameLayout
            android:layout_width="200dp"
            android:layout_height="100dp"
            android:layout_alignBottom="@id/main_nav">
    
    
            <android.support.design.widget.BottomNavigationView
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
            </android.support.design.widget.BottomNavigationView>
    
        </FrameLayout>
    
    </RelativeLayout>
    </ScrollView>
    </RelativeLayout>
    

    我建议将来使用 ContraintLayout 而不是相对布局

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      相关资源
      最近更新 更多