平时使用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();
}
});
}
}
谢谢