日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

粘性控件,滑动停留StickLayout(导航栏滑动停留)

發布時間:2024/4/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 粘性控件,滑动停留StickLayout(导航栏滑动停留) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們平時在使用APP的時候,經常可以見到一些導航欄滑到頂端就停留,而下面的控件可以接著滑動;今天,我就給大家介紹一個非常好用的滑動粘性控件StickLayout,它不僅可以讓其任意一個直接子控件滑動停留在頂端,而且還可以設置滑動到指定直接子控件,并且配有滑動改變監聽,可以輕松實現滑動時的聯動操作;我們用該控件就可以輕松實現像支付寶“所有應用”界面效果,下面我們就一起學習一下吧。

首先,我們來看一下效果演示圖:

Note:圖1為設置屬性wkp_canScrollToEndViewTop=true,圖2沒有;圖3為設置滑動改變監聽。

接下來,我們講解一下控件功能及其使用:

1.功能

滑動停留控件,可以讓其任意一個直接子控件滑動時停留在頂部,只需指定一個屬性而已,操作便捷。

2.Android Studio使用方法

dependencies{compile 'com.wkp:StickLayout:1.0.4'//Android Studio3.0+可用以下方式//implementation 'com.wkp:StickLayout:1.0.4' } 復制代碼

3.使用詳解

  • 屬性講解
<!--是否粘性停留(用于直接子控件)--><attr name="wkp_stick" format="boolean"/><!--是否開啟滑動到最后一個控件的頂部,默認不開啟(用于控件本身)--><attr name="wkp_canScrollToEndViewTop" format="boolean"/> 復制代碼
  • 布局示例
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns: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:orientation="vertical"><TextViewandroid:clickable="true"android:onClick="addView"android:gravity="center"android:padding="5dp"android:text="添加條目"android:layout_width="match_parent"android:layout_height="wrap_content"/><!--app:wkp_canScrollToEndViewTop="true"--><com.wkp.sticklayout_lib.widget.StickLayoutandroid:id="@+id/sl"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:onClick="click"android:id="@+id/tv1"android:text="第1行"android:gravity="center"android:layout_width="match_parent"android:layout_height="200dp"/><LinearLayoutapp:wkp_stick="true"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="40dp"><TextViewandroid:onClick="scrollTo"android:background="@android:color/holo_blue_light"android:text="NUM2"android:gravity="center"android:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"/><TextViewandroid:onClick="scrollTo3"android:background="@android:color/holo_green_light"android:text="NUM3"android:gravity="center"android:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"/><TextViewandroid:onClick="scrollTo4"android:background="@android:color/holo_red_light"android:text="NUM4"android:gravity="center"android:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"/><TextViewandroid:onClick="scrollTo7"android:background="@android:color/holo_orange_light"android:text="NUM7"android:gravity="center"android:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"/></LinearLayout><TextViewandroid:id="@+id/tv2"android:text="第2行"android:background="@android:color/holo_blue_light"android:gravity="center"android:layout_width="match_parent"android:layout_height="200dp"/><TextViewandroid:id="@+id/tv3"app:wkp_stick="true"android:text="第3行"android:background="@android:color/holo_green_light"android:gravity="center"android:layout_width="match_parent"android:layout_height="200dp"/><TextViewandroid:background="@android:color/holo_red_light"android:id="@+id/tv4"android:text="第4行"android:gravity="center"android:layout_width="match_parent"android:layout_height="200dp"/><TextViewandroid:id="@+id/tv5"android:text="第5行"android:gravity="center"android:layout_width="match_parent"android:layout_height="200dp"/><TextViewandroid:id="@+id/tv6"android:text="第6行"android:gravity="center"android:layout_width="match_parent"android:layout_height="200dp"/><TextViewandroid:background="@android:color/holo_orange_light"android:id="@+id/tv7"android:text="第7行"android:gravity="center"android:layout_width="match_parent"android:layout_height="200dp"/></com.wkp.sticklayout_lib.widget.StickLayout></LinearLayout> 復制代碼
  • 代碼示例
public class MainActivity extends AppCompatActivity {private StickLayout mSl;private TextView mTv2;private View mTv3;private View mTv7;private View mTv4;private int currentPosition = -1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSl = findViewById(R.id.sl);mTv2 = findViewById(R.id.tv2);mTv3 = findViewById(R.id.tv3);mTv4 = findViewById(R.id.tv4);mTv7 = findViewById(R.id.tv7); // mSl.setStickView(findViewById(R.id.tv2)); //設置粘性控件 // mSl.setStickView(findViewById(R.id.tv3)); // mSl.canScrollToEndViewTop(true); //設置是否開啟最后控件滑動到頂部//設置滑動改變監聽(一滑動就會有回調)mSl.setOnScrollChangeListener(new StickLayout.OnScrollChangeListener() {@Overridepublic void onScrollChange(StickLayout v, View currentView, int position, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {//直到當前控件改變在做事情if (currentPosition != position) {Toast.makeText(v.getContext(), ((TextView) currentView).getText().toString(), Toast.LENGTH_SHORT).show();currentPosition = position;}}});}public void addView(View view) {TextView textView = new TextView(view.getContext());textView.setGravity(Gravity.CENTER);textView.setPadding(10, 10, 10, 10);textView.setText("新條目");mSl.addView(textView, 0);}public void scrollTo2(View view) {//滑動到指定子控件mSl.scrollToView(mTv2);}public void scrollTo3(View view) {mSl.scrollToView(mTv3);}public void scrollTo4(View view) {mSl.scrollToView(mTv4);}public void scrollTo7(View view) {mSl.scrollToView(mTv7);} } 復制代碼

結語

控件支持直接代碼創建,還有更多API請觀看StickLayout.java內的注釋說明。

歡迎大家使用Github地址,感覺好用請給個Star鼓勵一下,謝謝!

大家如果有更好的意見或建議以及好的靈感,請郵箱作者,謝謝!

QQ郵箱: 1535514884@qq.com

163郵箱: 15889686524@163.com

Gmail郵箱: wkp15889686524@gmail.com

轉載于:https://juejin.im/post/5a4ed3fa518825733d68db81

總結

以上是生活随笔為你收集整理的粘性控件,滑动停留StickLayout(导航栏滑动停留)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。