在ListView底部添加填充

时间:2011-12-03 21:10:16

标签: android android-layout

我有一个正在使用自定义适配器填充的ListView。我想在列表中的最后一项添加填充以容纳广告,因此当您滚动到底部时,广告不会覆盖最后一项。我唯一的布局是ListView的每一行的布局:

<RelativeLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BaseStyle"
android:orientation="vertical"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="8dip"
android:paddingBottom="8dip"
  >  

 <TextView  
    android:id="@+id/text"
    style="@style/BaseStyle.Title"
/>

 </RelativeLayout>

除此之外,我只有填充ListView的自定义适配器代码。我不确定是否需要包含任何其他代码来帮助解决问题。

编辑,我没有主要布局,这就是我填充ListView的方式:

 public class Main extends ListActivity {
 private CustomAdapter adapter;
 private String[] items = {};

 @Override     
 public void onCreate(Bundle icicle) {
      super.onCreate(icicle);

      adapter = new CustomAdapter();

      items = PopulateItems();

      for (String item : items)
           adapter.addItem(item);

      this.setListAdapter(adapter);
      adapter.notifyDataSetChanged();
 }

 private class CustomAdapter extends BaseAdapter {
 private String[] mData;
 private LayoutInflater mInflater;

 public CustomAdapter() {
      mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 }

 public void addItem(String item) {
      mData.add(item);
 }

 @Override
 public int getCount() {
      return mData.size();
 }

 @Override
 public Object getItem(int position) {
      return mData.get(position);
 }

 @Override
 public long getItemId(int position) {
      return position;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent)
 {
      ViewHolder holder;
      String item = (String)this.getItem(position);

      if (convertView == null)
      {         
           holder = new ViewHolder();

           convertView = mInflater.inflate(R.layout.main, parent, false);
           holder.text = (TextView)convertView.findViewById(R.id.text);
           convertView.setTag(holder);
      } else {
           holder = (ViewHolder)convertView.getTag();
      }
      TextView tvText = holder.text;
      tvText.setText(item);
 }

 static class ViewHolder {
      TextView text;
 }

2 个答案:

答案 0 :(得分:2)

我认为你要找的是“clipToPadding”属性或setClipToPadding()方法:

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="@dimen/your_bottom_padding"/>

答案 1 :(得分:1)

根据您的需要,您需要拥有另一个包含两个视图的布局文件 - ListView和广告视图。确保为listview使用id“@android:id / list”。