精华内容
下载资源
问答
  • 主要为大家详细介绍了Android返回顶部实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了Android悬浮按钮FloatingActionButton点击回到顶部的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android返回顶部实现

    千次阅读 2017-02-17 09:36:50
    点击按钮返回顶部

    点击按钮返回顶部,直接上代码吧

    布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:orientation="vertical">
    
        <ScrollView
            android:id="@+id/sv_home"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fillViewport="true">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" 
                    android:background="@mipmap/eason"/>
    
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" 
                    android:background="@mipmap/eason"/>
    
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" 
                    android:background="@mipmap/eason"/>
                                           <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fab_top"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|bottom"
                    android:layout_marginRight="10dp"
                    android:src="@mipmap/top"
                    app:backgroundTint="#ecefef"
                    app:elevation="10dp"
                    app:pressedTranslationZ="12dp"
                    app:rippleColor="@color/colorPrimary" />
            </LinearLayout>
        </ScrollView>
    </LinearLayout>

    按钮点击事件

    topBtn.setOnClickListener(new OnClickListener() {
    
             @Override
             public void onClick(View v) {
                sc.post(new Runnable() {
    
                   @Override
                   public void run() {
                      sc.post(new Runnable() {
                         public void run() {
                            // 返回顶部
                            sc.fullScroll(ScrollView.FOCUS_UP);
                         }
                      });
                   }
                });
    
             }
          });

    附带一个跳到底部

     bottomBtn.setOnClickListener(new OnClickListener() {
    
             @Override
             public void onClick(View v) {
                sc.post(new Runnable() {
    
                   @Override
                   public void run() {
                      sc.post(new Runnable() {
                         public void run() {
                            // 滚动到底部
                            sc.fullScroll(ScrollView.FOCUS_DOWN);
                         }
                      });
                   }
                });
             }
          });
    展开全文
  • 之前在学习RecyclerView的时候,建立了一个可以滑动的View列表,但是当滑动距离过长的时候,需要手动返回到顶部,于是加了一个一键返回顶部的按钮。 效果图 要实现这种效果,有两点需要实现: 1、控制...
  • 首先给大家看一下我们今天这个最终实现的效果图...我这里只是单纯的实现了ListView返回顶部的功能。具体效果大家可以适当地美化 在实际项目中可以换图标,去掉右侧滚动条等。具体ui美化不做解释。 好了,首先我们是当

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193
    新浪微博:http://weibo.com/mcxiaobing
    首先给大家看一下我们今天这个最终实现的效果图:
    这里写图片描述
    我这里只是单纯的实现了ListView返回顶部的功能。具体效果大家可以适当地美化
    在实际项目中可以换图标,去掉右侧滚动条等。具体ui美化不做解释。
    好了,首先我们是当不在顶部的时候,返回顶部按钮就会出现,而到顶部之后就会隐藏此按钮,所以我们这里就要算Listview的滑动偏移量,当然,有这个返回顶部按钮,而且一直显示在底部,所以当然用相对布局了。先给大家看一下xml布局源码比较简单:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white" >
    
        <ListView
            android:id="@+id/my_listView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />
    
        <Button
            android:id="@+id/top_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:visibility="gone"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="6dp"
            android:layout_marginRight="6dp"
            android:background="@mipmap/top_btn_bg"
            android:gravity="center"
            android:text="顶" />
    
    </RelativeLayout>

    然后我们需要一个获取屏幕的一个工具类,这里我封装好了,:

    package davidtotoplistview.qq986945193.davidtotoplistview.davidtotoplistview;
    
    import android.content.Context;
    import android.view.Display;
    import android.view.View;
    import android.view.WindowManager;
    
    /**
     * @author :程序员小冰
     * @新浪微博 :http://weibo.com/mcxiaobing
     * @GitHub: https://github.com/QQ986945193
     * @CSDN博客: http://blog.csdn.net/qq_21376985
     * @码云OsChina :http://git.oschina.net/MCXIAOBING
     */
    public class ScreenUtil {
    
        /**
         * 获取屏幕的宽度
         * 
         * @param context
         * @return
         */
        public static int getScreenWidth(Context context) {
            WindowManager manager = (WindowManager) context
                    .getSystemService(Context.WINDOW_SERVICE);
            Display display = manager.getDefaultDisplay();
    
            return display.getWidth();
        }
    
        /**
         * 获取屏幕的高度
         * 
         * @param context
         * @return
         */
        public static int getScreenHeight(Context context) {
            WindowManager manager = (WindowManager) context
                    .getSystemService(Context.WINDOW_SERVICE);
            Display display = manager.getDefaultDisplay();
            return display.getHeight();
        }
    
        /**
         * 获取屏幕中控件顶部位置的高度--即控件顶部的Y点
         * 
         * @return
         */
        public static int getScreenViewTopHeight(View view) {
            return view.getTop();
        }
    
        /**
         * 获取屏幕中控件底部位置的高度--即控件底部的Y点
         * 
         * @return
         */
        public static int getScreenViewBottomHeight(View view) {
            return view.getBottom();
        }
    
        /**
         * 获取屏幕中控件左侧的位置--即控件左侧的X点
         * 
         * @return
         */
        public static int getScreenViewLeftHeight(View view) {
            return view.getLeft();
        }
    
        /**
         * 获取屏幕中控件右侧的位置--即控件右侧的X点
         * 
         * @return
         */
        public static int getScreenViewRightHeight(View view) {
            return view.getRight();
        }
    
    }

    好了,然后我们需要一个adapter,就是现实列表的一个简单的textview

    package davidtotoplistview.qq986945193.davidtotoplistview.davidtotoplistview;
    
    import java.util.List;
    
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    /**
     * @author :程序员小冰
     * @新浪微博 :http://weibo.com/mcxiaobing
     * @GitHub: https://github.com/QQ986945193
     * @CSDN博客: http://blog.csdn.net/qq_21376985
     * @码云OsChina :http://git.oschina.net/MCXIAOBING
     *
     * listview所需要的adapter
     */
    public class MyAdapter extends BaseAdapter {
    
        private List<String> mTitleArray;// 标题数组
        private LayoutInflater inflater;
    
        /**
         * 构造方法
         *
         * @param context    // 上下文对象
         * @param titleArray // 标题数组
         */
        public MyAdapter(Context context, List<String> titleArray) {
            this.mTitleArray = titleArray;
            inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
    
        /**
         * 获取Item总数
         */
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            if (mTitleArray != null) {
                return mTitleArray.size();
            } else {
                return 0;
            }
        }
    
        /**
         * 获取一个Item对象
         */
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            if (mTitleArray != null) {
                return mTitleArray.get(position);
            } else {
                return null;
            }
        }
    
        /**
         * 获取指定item的ID
         */
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ViewHolder holder = null;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = inflater.inflate(R.layout.item_layout, null);
                holder.mTitleTv = (TextView) convertView
                        .findViewById(R.id.title_tv);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
    
            holder.mTitleTv.setText(mTitleArray.get(position));
            return convertView;
        }
    
        private class ViewHolder {
            private TextView mTitleTv;
        }
    
    }

    ok,现在基本上工具都做好了,开始实现我们的重要的部分,实现返回顶部:

    package davidtotoplistview.qq986945193.davidtotoplistview.davidtotoplistview;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.AbsListView;
    import android.widget.Button;
    import android.widget.ListView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author :程序员小冰
     * @新浪微博 :http://weibo.com/mcxiaobing
     * @GitHub: https://github.com/QQ986945193
     * @CSDN博客: http://blog.csdn.net/qq_21376985
     * @码云OsChina :http://git.oschina.net/MCXIAOBING
     */
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        private ListView myListView;
        private Button topBtn;
    
        private MyAdapter adapter;
        private boolean scrollFlag = false;// 标记是否滑动
        private int lastVisibleItemPosition = 0;// 标记上次滑动位置
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            myListView = (ListView) findViewById(R.id.my_listView);
            topBtn = (Button) findViewById(R.id.top_btn);
    
            adapter = new MyAdapter(this, getTitleDatas());
            myListView.setAdapter(adapter);
    
            topBtn.setOnClickListener(this);
            myListView.setOnScrollListener(new AbsListView.OnScrollListener() {
    
                @Override
                public void onScrollStateChanged(AbsListView view, int scrollState) {
                    // TODO Auto-generated method stub
                    switch (scrollState) {
                        // 当不滚动时
                        case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:// 是当屏幕停止滚动时
                            scrollFlag = false;
                            // 判断滚动到底部
                            if (myListView.getLastVisiblePosition() == (myListView
                                    .getCount() - 1)) {
                                topBtn.setVisibility(View.VISIBLE);
                            }
                            // 判断滚动到顶部
                            if (myListView.getFirstVisiblePosition() == 0) {
                                topBtn.setVisibility(View.GONE);
                            }
    
                            break;
                        case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 滚动时
                            scrollFlag = true;
                            break;
                        case AbsListView.OnScrollListener.SCROLL_STATE_FLING:// 是当用户由于之前划动屏幕并抬起手指,屏幕产生惯性滑动时
                            scrollFlag = false;
                            break;
                    }
                }
    
                /**
                 * firstVisibleItem:当前能看见的第一个列表项ID(从0开始)
                 * visibleItemCount:当前能看见的列表项个数(小半个也算) totalItemCount:列表项共数
                 * CSDN博客: http://blog.csdn.net/qq_21376985
                 */
                @Override
                public void onScroll(AbsListView view, int firstVisibleItem,
                                     int visibleItemCount, int totalItemCount) {
                    // 当开始滑动且ListView底部的Y轴点超出屏幕最大范围时,显示或隐藏顶部按钮
                    if (scrollFlag
                            && ScreenUtil.getScreenViewBottomHeight(myListView) >= ScreenUtil
                            .getScreenHeight(MainActivity.this)) {
                        if (firstVisibleItem > lastVisibleItemPosition) {// 上滑
                            topBtn.setVisibility(View.VISIBLE);
                        } else if (firstVisibleItem < lastVisibleItemPosition) {// 下滑
                            topBtn.setVisibility(View.GONE);
                        } else {
                            return;
                        }
                        lastVisibleItemPosition = firstVisibleItem;
                    }
                }
            });
        }
    
        /**
         * 获取标题数据列表
         *
         * @return
         */
        private List<String> getTitleDatas() {
            List<String> titleArray = new ArrayList<String>();
            for (int i = 0; i < 30; i++) {
                titleArray.add("程序员小冰" + i + "个item");
            }
            return titleArray;
        }
    
        /**
         * 滚动ListView到指定位置
         *
         * @param pos
         */
        private void setListViewPos(int pos) {
            if (android.os.Build.VERSION.SDK_INT >= 8) {
                myListView.smoothScrollToPosition(pos);
            } else {
                myListView.setSelection(pos);
            }
        }
    
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
                case R.id.top_btn:// 点击按钮返回到ListView的第一项
                    setListViewPos(0);
                    break;
            }
        }
    
    }
    
    

    好了,教程到此结束。如果此文章帮到了你,欢迎点赞。

    姊妹篇:Scrollview返回顶部,快速返回顶部的功能实现详解链接:
    http://blog.csdn.net/qq_21376985/article/details/52511303
    源代码需要的可以去
    (AndroidStudio版)github下载地址:
    https://github.com/QQ986945193/DavidToTopListView

    展开全文
  • 一、CoordinatorLayout返回顶部: CoordinatorLayout.Behavior behavior = ((CoordinatorLayout.LayoutParams) indexAppBar.getLayoutParams()).getBehavior(); if (behavior instanceof AppBarLa...

    一、CoordinatorLayout返回顶部:

     CoordinatorLayout.Behavior behavior =
                    ((CoordinatorLayout.LayoutParams) indexAppBar.getLayoutParams()).getBehavior();
            if (behavior instanceof AppBarLayout.Behavior) {
                AppBarLayout.Behavior appBarLayoutBehavior = (AppBarLayout.Behavior) behavior;
                int topAndBottomOffset = appBarLayoutBehavior.getTopAndBottomOffset();
                if (topAndBottomOffset != 0) {
                    appBarLayoutBehavior.setTopAndBottomOffset(0);
                }
            }
    

    二、RecyclerView返回顶部

     recyclerView.scrollToPosition(0);
    

    注:CoordinatorLayout一定要和AppBarLayout一起使用哟

    展开全文
  • 当页面滑动到底部,出现回到顶部的按钮相信对大家来说并不陌生,下面这篇文章主要介绍了关于Android scrollToTop实现点击回到顶部,并兼容PullTorefreshScrollview的相关资料,文中通过示例代码介绍的非常详细,需要...
  • android开发中,常常会遇到这样...这对客户来说体验可能不够好,如何让这一页面显示顶部? 可以在布局文件中添加两行代码:android:focusable=true android:focusableInTouchMod=true <LinearLayout xmlns:andro

    在android开发中,常常会遇到这样的问题:当你浏览完当前页面后,跳转到下一页面浏览,但你想回到上一页面查看一条信息时,发现上一页面显示底部。

    这对客户来说体验可能不够好,如何让这一页面显示顶部?

    可以在布局文件中添加两行代码:android:focusable=true

    android:focusableInTouchMod=true

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:focusable="true"
        android:focusableInTouchMod"true">
        <!-- TODO: Update blank fragment layout 主页-->


    
    

    具体而言,

    android:focusable=true

    android:focusableInTouchMod=true

    也可以用在这样的情境下:进入页面时,不想让文字输入框(Editext)自动获取焦点;

    <LinearLayout
    
            style="@style/FillWrapWidgetStyle"
    
            android:orientation="vertical"
    
            android:background="@color/black"
    
            android:gravity="center_horizontal"
    
            
    
             android:focusable="true"  
    
            android:focusableInTouchMode="true"
    
            >
    也可以在代码中实现

    EditText对象的clearFocus();

    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);        imm.hideSoftInputFromWindow(editMsgView.getWindowToken(), 0);(关闭软键盘。。。)

    android:focusableInTouchMode="true"
    这个属性的意思很明显,就是可以通过touch来获得focus。在手机上开发用的不多,因为大多手机都是触摸式的。最近一个TV上的应用需要用到。

         一个界面上有一个自定义个button,我需要进入这个界面就高亮这个button。但是用遥控选择这个程序进入能正常显示,用鼠标点击进入就没有高亮的效果。最后添加上这个属性,效果出来了。

         可见,click事件和touch事件在焦点处理上是不同的。








    展开全文
  • 效果 准备四张图片资源  首先XML布局  我们采用FrameLayout布局 代码: ...FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"... android:layout_width...
  • recyclerView下滑到某个position,按钮显示,点击按钮返回recyclerView的顶部; 1.xml布局: <ImageView android:id="@+id/iv_batch_top" android:layout_width="40dp" android:layout_height="40dp" and...
  • android webview点击返回键返回上一页

    千次阅读 2017-12-20 15:44:02
    重写两个返回方法即可: @Override public void onBackPressed() { if (webView.canGoBack()) { webView.goBack(); webView.removeAllViews(); } else { super.onBackPressed(); } } @O...
  • }).setNegativeButton("返回",new DialogInterface.OnClickListener() {//添加返回按钮 @Override public void onClick(DialogInterface dialog, int which) {//响应事件 return; } }).show();//在按键...
  • android webview点击返回键回到上一个html android webview点击返回键返回上一个html /** * 使点击回退按钮不会直接退出整个应用程序而是返回上一个页面 * * */ @Override public boolean onKeyDown...
  • Activity在顶部自定义返回箭头并对NavigationIcon设置点击返回事件。
  • NestedScrollView嵌套Recyclerview部分手机返回到这个页面Recyclerview顶部,而不是页面NestedScrollView顶部 部分布局大致如下 <androidx.core.widget.NestedScrollView android:layout_width="match_...
  • 在有些listview上面和ScrollView上,当滑动到底部的时候,在右下角会出现一个回到顶部的按钮,提供更好的用户体验。 效果图如下: 布局  先说布局,可以用帧布局Framelayout,也可以用相对布局...
  • Android - 回到顶部实现

    千次阅读 2016-07-22 11:58:19
    点击回到顶部按钮,ScrollView、ListVie 滑到顶部 隐藏回到顶部按钮。 以上步骤进入循环 实现代码 - ScrollView Xml 布局文件编写回到顶部按钮并设置为Invisiable 设置ScrollView 的Touch监听 //设置Sc
  • Android如何实现类似ios点击状态栏回到顶部功能
  • GridView继承了AbsListView, 在这个AbsListView中有个pointToPosition函数,这个函数就是负责由点击的position返回具体的点击item的位置,如果是没有点击到任何一个item,这个函数就返回-1。
  • android实现自定义顶部标题栏

    千次阅读 2018-05-24 08:31:05
    android实现自定义顶部标题栏 标题布局&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"...
  • //滑动监听,当条目滑动一定程度的时候让返回顶部的按钮显示 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, ...
  • Android视图的顶部悬停的实现

    千次阅读 2016-08-26 10:58:06
    项目中经常会用到,一个View悬停到顶部的情况。 这里借鉴网上的方式给出来2中实现方式。 1,利用ScrollView+ListView实现 2,利用ListView增加头部实现。 然后简单的分析了一下它们的优缺。
  • Android添加顶部通知

    千次阅读 2015-10-26 18:18:27
    用过Android版的QQ的都知道,QQ返回的时候在顶部通知里会出现一个企鹅,表明QQ正在运行,可以拉开通知,点击手机QQ出现主界面,继续运行。 所以我想让自己的软件也出现这么一个通知,并且可以快速的打开查看。 ...
  • Android项目中自定义顶部标题栏

    万次阅读 多人点赞 2015-04-25 00:46:41
    Android项目中自定义顶部标题栏 先来图: 思路及实现步骤 1.定义标题栏布局 2.自定义TitleActivity控制标题栏按钮监听 3.在TitleActivity中实现标题栏以下内容切换
  • 1. 如果你只是想自定义带返回按钮的标题样式 比如下面这个样子 (1)编写自定的标题布局,这里我只自定义了背景色和文字样式 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,092
精华内容 6,436
关键字:

android点击返回顶部