類似footer的效果,利用簡單的佈局實現ListView底部懸浮控制元件
阿新 • • 發佈:2018-11-29
平時使用listview/recycleview的時候,都會經常碰到這麼一個需求:就是一個ListView下面懸浮一個佈局,當ListView的項超過螢幕下方則固定在底部。
一開也是想到用ListView的footer去實現,後來發現一個簡單的佈局實現這個功能。
看圖:
佈局程式碼:
主要是listview和底部佈局線性分佈,底部預留佔用不顯示的空間使得ListView超過螢幕時候有位置顯示
<?xml version="1.0" encoding="utf-8"?> <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:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </ListView> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" > <Button android:id="@+id/bt_sub" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="減"/> <Button android:id="@+id/bt_add" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="加"/> </LinearLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:visibility="invisible"> </View> </RelativeLayout>
測試程式碼:
package com.example.wush.listviewfooterapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { //資料來源 private List<String> stringList = new ArrayList<>(); private ListView listView; private Button bt_sub; private Button bt_add; private int index = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { listView = findViewById(R.id.lv); bt_sub = findViewById(R.id.bt_sub); bt_add = findViewById(R.id.bt_add); final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, stringList); listView.setAdapter(adapter); //刪除一個Item bt_sub.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (stringList.size() > 0) { stringList.remove(stringList.size()-1); index--; adapter.notifyDataSetChanged(); } } }); //增加一個Item bt_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { index++; stringList.add("新來的:" + index + "號"); adapter.notifyDataSetChanged(); } }); } }
謝謝