Android 簡單實現ListView頂部懸浮效果

來源:互聯網
上載者:User

Android 簡單實現ListView頂部懸浮效果

首先上,實現如下效果:




起初在網上搜了下實現這樣的效果,美團網,福士點評的“購買框”懸浮效果也是這樣的,不過作者實現比較麻煩,自己想了想就根據ListView提供的一些特性進行了簡單實現。

整個主要布局就是一個ListView,如果listview的上面有內容且高度比較高,可以把它當做listview的header,這樣也可以避免ScrollView嵌套ListView帶來的麻煩(記住這一點就不會在平時出現ScrollView與ListView各種問題了)。要實現懸浮效果,主要是根據ListView可見的第一個條目是哪個條目來操作的。注意這裡的“懸浮”其實只是通過 隱藏/顯示 懸浮部分來實現:在ListView“背後”有一個隱藏的“懸浮部分”,當ListView條目中的懸浮部分成為ListView可見部分第一個時,這時非ListView條目中的懸浮部分顯示出來,這樣造成“懸浮”部分一直在頂部浮動,當ListView可見部分第一個條目並不是懸浮時,非ListView那部分“隱藏部分”繼續隱藏。表達能力不強,自己都快被自己繞暈了,總之就是2個懸浮部分:ListView條目中的和處於布局頂部隱藏(Gone/invisible)的起初未顯示的,通過這兩部分的操作來完成整個功能的。希望讀者能夠理解……

主要代碼:

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sticky);invis = (LinearLayout) findViewById(R.id.invis);strs = new String[100];for (int i = 0; i < 20; i++) {strs[i] = "data-----" + i;}lv = (ListView) findViewById(R.id.lv);View header = View.inflate(this, R.layout.stick_header, null);//頭部內容lv.addHeaderView(header);//添加頭部lv.addHeaderView(View.inflate(this, R.layout.stick_action, null));//ListView條目中的懸浮部分 添加到頭部lv.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1, strs));lv.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if (firstVisibleItem >= 1) {invis.setVisibility(View.VISIBLE);} else {invis.setVisibility(View.GONE);}}});}


布局:

        <frameLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@id/title" >                                        </frameLayout>

代碼:http://download.csdn.net/download/ljfbest/7804769

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.