如何使布局滚动浏览Android中的内容?

时间:2016-08-24 03:26:59

标签: android scroll

在iOS应用中,您可以轻松制作它,这样,如果向下滚动到页面底部并继续滚动,您将看到空白区域。如果放开它会向后拉,使内容的底部位于屏幕的底部,就好像它被弹簧握住一样。事实上,我认为这是默认行为,因为它经常发生。

我想在Android中做同样的事情,因为我的活动在右下角有标准的浮动操作按钮,它阻止了我的一些内容。如果我可以滚动浏览内容,那么我就可以看到所有内容。

作为一个例子,我创建了一个带有空白活动的新Android Studio项目(带有浮动操作按钮),并且只修改了content_main.xml,添加了一个ScrollView和许多lorem ipsum,以便有一些东西要滚动:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut venenatis vulputate urna, ac tempor est laoreet ac. Ut vitae auctor risus, sit amet iaculis est. Vestibulum vitae velit eget lorem laoreet aliquet. Praesent non suscipit odio, in viverra nisl. Mauris pharetra turpis lorem, ac ultricies lacus sagittis et. Praesent quis dapibus quam. Sed commodo leo ac ornare mollis. Cras sollicitudin magna risus, quis ullamcorper neque ultricies non. Aliquam dapibus ullamcorper lorem, et mattis sem tristique ut. Nam faucibus pharetra metus nec rhoncus. Quisque aliquet id odio in sodales. Suspendisse venenatis arcu eu imperdiet dictum.

    Sed elementum sem massa, dignissim egestas mauris faucibus in. Suspendisse potenti. Sed ac facilisis tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed gravida ex eget nibh faucibus, ac volutpat nulla gravida. Vestibulum placerat vel urna ac pellentesque. Pellentesque porta orci leo, nec commodo tortor luctus quis. Suspendisse non metus sit amet mi congue hendrerit.

    Vivamus ex metus, vestibulum quis vulputate ac, tincidunt nec enim. Fusce vitae ligula eros. Nunc ut gravida odio. Praesent ultrices massa in purus sodales, quis gravida lectus consectetur. Curabitur quis dignissim sem. Proin posuere facilisis nisl, vulputate ultrices mi tempor non. Integer tristique efficitur urna, at lobortis dolor rutrum eu. Donec vel sem pretium, commodo velit quis, hendrerit quam. Cras hendrerit iaculis augue, ut vestibulum arcu aliquam ut. In suscipit et enim condimentum convallis. In vitae nisi quis felis tristique rutrum sed elementum eros. Curabitur lobortis porttitor interdum. Donec elementum tempus est, sed ultricies est tempus eu. Proin laoreet, turpis sodales finibus ultrices, odio est efficitur ex, eget convallis mauris ipsum sed nunc.

    Duis sodales tempor volutpat. Nulla laoreet condimentum aliquam. Sed lacinia molestie eros vel imperdiet. Donec mollis tempor enim, vitae pellentesque odio vestibulum ac. In maximus hendrerit enim, eu bibendum urna interdum sed. Praesent condimentum sit amet turpis ut suscipit. In a condimentum odio. Duis metus metus, sagittis et faucibus a, elementum sit amet elit. Duis sit amet auctor odio.

    Nullam vitae dictum est. Nunc suscipit, lectus sit amet blandit posuere, arcu dolor porttitor dolor, et volutpat tortor tortor sed leo. Nulla facilisi. Curabitur vestibulum vestibulum ipsum, ut iaculis mi luctus placerat. Sed lobortis eu nisi eget ultrices. Pellentesque efficitur mi non massa condimentum aliquet. Ut ac dolor eget dolor accumsan scelerisque pharetra non erat. Nullam semper molestie ultrices. Nunc et auctor turpis. Nullam fermentum dolor eu mi pellentesque finibus. Vestibulum eleifend varius maximus. Donec id bibendum arcu. Curabitur lacinia lorem sed ex blandit, in lacinia orci tempus. Ut bibendum luctus consectetur. Mauris sed rutrum nisi. Cras facilisis nibh sed consequat facilisis." android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </ScrollView>
</RelativeLayout>

如您所见,结果隐藏了按钮背后的一些内容:

enter image description here

解决此问题的规范方法是什么?

1 个答案:

答案 0 :(得分:1)

你可以做到这一点。我为你做了它将100%工作

像这样设置ScrollView的ID

    <ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/sv">

然后在Activity Calss

中创建一个对象并将Listener设置为这样
FloatingActionButton fab;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    fab = (FloatingActionButton) findViewById(R.id.fab);
    ScrollView sv = (ScrollView) findViewById(R.id.sv);

    sv.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){
                // Do what you want
                fab.setVisibility(View.INVISIBLE);
                return true;
            }else if(motionEvent.getAction() == MotionEvent.ACTION_UP){
                // Do what you want
                fab.setVisibility(View.VISIBLE);
                return true;
            }

            return false;
        }
    });
}

当你滚动它会隐藏按钮,当你不滚动时它会显示...