需要在Android中为Gridview创建页脚
请参见下面的布局。我无法将页脚按钮放在需要在Android中为Gridview创建页脚,android,layout,gridview,Android,Layout,Gridview,请参见下面的布局。我无法将页脚按钮放在GridView下方。 任何帮助都将不胜感激 当Gridview填充屏幕按钮不显示时 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout1" android:layout_width="fill_par
GridView
下方。
任何帮助都将不胜感激
当Gridview填充屏幕按钮不显示时
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/gridview"
android:text="Load More Images" />
</RelativeLayout>
尝试先添加按钮,然后将网格视图放在其顶部。这样的事情应该行得通:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Load More Images" />
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/button1"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
</RelativeLayout>
编辑
根据你的评论,我可以理解为什么上述方法不起作用。假设您的意思是希望按钮仅在滚动到底部后才显示(而不是一直在屏幕上),我建议您使用以下布局:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Load More Images" />
</LinearLayout>
</ScrollView>
检查这是否有帮助
<Button
android:id="@+id/button1"
style="@android:style/ButtonBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Load More Images" />
使用与以下相同的方法: 编辑:
<FrameLayout android:id="@+id/linear_Layout_List"
android:layout_gravity="center_horizontal|top|bottom"
android:layout_marginTop="90dip" android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_marginBottom="60dip" android:background="#E4E4E4">
<GridView android:layout_width="fill_parent"
android:layout_gravity="center_horizontal|top|bottom"
android:columnWidth="90dp" android:numColumns="3"
android:horizontalSpacing="10dp" android:stretchMode="columnWidth"
android:gravity="center" android:id="@+id/Search_Result_Grid"
android:background="#E4E4E4" android:focusable="true"
android:verticalSpacing="10dp" android:layout_height="wrap_content"
android:layout_marginBottom="45dip">
</GridView>
<Button android:id="@+id/txt_LoadMoreGrid"
android:layout_width="fill_parent" android:layout_gravity="center_horizontal|bottom"
android:layout_height="wrap_content" android:text="Load More...."
android:clickable="true" android:textColor="#ffffff"
android:visibility="invisible" android:background="@drawable/top_bar_bg"></Button>
</FrameLayout>
并调用onScroll方法隐藏您想要的内容……….此实现用于在GridView中加载更多功能………它适合我
grid.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
System.out.println("The first visible Item:"+firstVisibleItem);
if(width<=320 && height<=480)
{
if(firstVisibleItem+5==totalItemCount-1)
{
/*FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,FrameLayout.LayoutParams.WRAP_CONTENT,Gravity.NO_GRAVITY);
layoutParams.setMargins(0, 0, 0, 45);
grid.setLayoutParams(layoutParams);*/
tv_Load.setVisibility(tv_Load.VISIBLE);
}
else
{
/* FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,FrameLayout.LayoutParams.WRAP_CONTENT,Gravity.NO_GRAVITY);
layoutParams.setMargins(0, 0, 0, 0);
grid.setLayoutParams(layoutParams);*/
tv_Load.setVisibility(tv_Load.GONE);
}
}
else
{
if(firstVisibleItem+8==totalItemCount-1)
{
/*FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,FrameLayout.LayoutParams.WRAP_CONTENT,Gravity.NO_GRAVITY);
layoutParams.setMargins(0, 0, 0, 45);
grid.setLayoutParams(layoutParams);*/
tv_Load.setVisibility(tv_Load.VISIBLE);
}
else
{
/* FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,FrameLayout.LayoutParams.WRAP_CONTENT,Gravity.NO_GRAVITY);
layoutParams.setMargins(0, 0, 0, 0);
grid.setLayoutParams(layoutParams);*/
tv_Load.setVisibility(tv_Load.GONE);
}
}
}
});
grid.setOnScrollListener(新的OnScrollListener(){
@凌驾
公共无效onScrollStateChanged(AbsListView视图,int scrollState){
}
@凌驾
public void onScroll(AbsListView视图、int firstVisibleItem、int visibleItemCount、int totalItemCount){
System.out.println(“第一个可见项:“+firstVisibleItem”);
如果(宽度<代码>
对我来说很好我通过一个小技巧成功地将页脚添加到了我的gridview中。假设您的适配器的主要数据是 MyDataInfo对象列表,现在当您将所有数据传递给适配器时,可以添加两个空(null) 对象,并在getView中检查数据是否为空,然后膨胀所需的视图
// in the adapter
public void addVoid(YourInfo info) {
dataList.add(info);
dataList.add(info);
notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent) {
if (dataList.get(position) !=null) {
View vi = convertView;
ViewHolder holder;
if (convertView == null || convertView.getTag().equals("stop")) {
//inflate your gridview item
}
else {
holder = (ViewHolder) vi.getTag();
}
// provide data to views
return vi;
}
else {
View v;
if (position == dataList.size() - 2) {
v = inflater.inflate(R.layout.show_more, null); // load more view
v.setTag("stop");
}
else {
v = inflater.inflate(R.layout.progress_bar, null); // progress bar
v.setTag("stop");
}
return v;
}
}
在此之前,在您设置适配器的主要活动中,您将有如下内容
YourAdapter adap = new YourAdapter(this, dataList);
gridView.setAdapter(adap);
YourInfo info = null;
adapter.addVoid(info);
还有一件很重要的事你必须处理好McClick
int size = adapter.getCount();
public void onItemClick(AdapterView<?> parent,View view, int position, long id) {
if (position == size - 2) { // user selected SHOW MORE view
int wantedPosition = size - 1;
int firstPosition = grid.getFirstVisiblePosition();
int wantedChild = wantedPosition- firstPosition;
ProgressBar progBar = grid.getChildAt(wantedChild);
progBar.setVisibility(View.Visible);
return;
}
if (position == size - 1) // user selected progress bar
return;
}
int size=adapter.getCount();
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(位置==大小-2){//用户选择显示更多视图
int wantedPosition=大小-1;
int firstPosition=grid.getFirstVisiblePosition();
int wantedChild=wantedPosition-firstPosition;
ProgressBar progBar=grid.getChildAt(wantedChild);
progBar.setVisibility(View.Visible);
返回;
}
if(position==size-1)//用户选择的进度条
返回;
}
希望这有帮助^ ^我一直在搜索GridView,它允许我们
addFooterView
和addHeaderView
像ListView
一样
这是两年前的一篇帖子。我是通过谷歌搜索结果中的链接来到这里的。我不知道这个问题是否已经解决
如果没有,这里有一个图书馆可能会有帮助
很简单:
GridViewWithHeaderAndFooter gridView = (GridViewWithHeaderAndFooter) v.findViewById(R.id.ly_image_list_grid);
LayoutInflater layoutInflater = LayoutInflater.from(this);
View headerView = layoutInflater.inflate(R.layout.test_header_view, null);
View footerView = layoutInflater.inflate(R.layout.test_footer_view, null);
gridView.addHeaderView(headerView);
gridView.addFooterView(footerView);
以下是屏幕快照:
希望这会有所帮助。祝你好运!向GridView添加两个属性:
- 安卓:填充底部的大小作为您的按钮
- android:clipToPadding=“false”
这将为网格底部的按钮留出一些空间。这是我错误地添加的。请参阅更新的代码。我希望在网格视图后添加按钮,如listview页脚。@DhavalKhant-您尝试过我发布的布局吗?它应该将按钮放在网格视图底部。@DhavalKhant-我不确定您想要什么。您能详细说明一下吗关于为什么这对您不起作用?您的代码运行良好,但我想要gridview的页脚视图,如LIstviewfooter@DhavalKhant-让我们看看我的要求是否正确。当GridView较短时,按钮应正好位于其下方,按钮下方有所有额外空间。但当GridView较高时,它应垂直截断,并且按钮应该在屏幕底部。是吗?不是listview我想要gridview项目后的页脚。哦,对不起,忘了更改,但它适用于列表和网格视图检查更新代码。事实上,Dhaval我在6个月前也遇到过同样的问题,我在网上搜索了同样的问题,但无法成功,即使我也得到了同样的答案回答你,但是失败了,在我自己实现之后,得到了积极的结果,这就是我的答案,如果这个答案对你不起作用,那么请你自己想想,怎么做,因为Gridview没有任何footerview。你好,萨纳特,你是如何得到宽度和高度值的?谢谢。如果(参见类似帖子:您必须在按下此按钮后关闭GridView,当然,从中删除/>可能会对像我这样的读者有所帮助!链接:
GridViewWithHeaderAndFooter gridView = (GridViewWithHeaderAndFooter) v.findViewById(R.id.ly_image_list_grid);
LayoutInflater layoutInflater = LayoutInflater.from(this);
View headerView = layoutInflater.inflate(R.layout.test_header_view, null);
View footerView = layoutInflater.inflate(R.layout.test_footer_view, null);
gridView.addHeaderView(headerView);
gridView.addFooterView(footerView);