Necesita crear pie de página para Gridview en Android

Vea abajo la disposición. No puedo poner el botón de pie debajo de un GridView . Cualquier ayuda será apreciada.

Cuando Gridview llene el botón de pantalla no se muestra.

 <?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> 

He estado manteniendo la búsqueda durante mucho tiempo para un GridView que nos permite addFooterView y addHeaderView como ListView .

Es un post hace 2 años. Vengo aquí siguiendo el enlace en el resultado de búsqueda de Google. No sé si este problema ha sido resuelto o no.

Si no, aquí hay una biblioteca que puede ser útil. https://github.com/liaohuqiu/android-GridViewWithHeaderAndFooter .

Es muy sencillo:

 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); 

Aquí hay una instantánea de pantalla:

Captura de pantalla

Espero que esto sea útil. ¡Buena suerte!

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" > <GridView android:layout_height="match_parent" android:id="@+id/all_workouts_list" android:columnWidth="90dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:stretchMode="columnWidth" android:verticalSpacing="10dp" android:cacheColorHint="#ffffffff" android:layout_width="match_parent" android:layout_above="@+id/add_workout_all_workout_list"></GridView> <Button android:layout_width="wrap_content" android:id="@+id/add_workout_all_workout_list" android:layout_height="wrap_content" android:text="Add Workout" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true"></Button> </RelativeLayout> 

Funciona bien para mi

Me las arreglé para añadir pie de página a mi gridview con un pequeño truco. Digamos que los datos principales de los adaptadores son Lista de objetos MyDataInfo, ahora cuando pasó todos los datos al adaptador, puede agregar dos objetos vacíos ( nulos ) y comprobar en getView si los datos son nulos o no e inflar la vista deseada.

 // 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; } 

}

Antes de esto en su actividad principal donde se establece el adaptador tendrá algo como esto

 YourAdapter adap = new YourAdapter(this, dataList); gridView.setAdapter(adap); YourInfo info = null; adapter.addVoid(info); 

Y lo importante que tendrás que manejar onitemclick

 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; } 

Espero que esto ayude ^ ^

Utilice lo mismo que el siguiente:

Editado:

 <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> 

Y Llame al método onScroll para ocultar lo mismo que desea ……….. esta implementación para la funcionalidad LOAD MORE en GridView …………. Funciona para mí.

 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); } } } }); 

Intente agregar el botón primero y poner la vista de cuadrícula en la parte superior de la misma. Algo así debería funcionar:

 <?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> 

EDITAR

Sobre la base de sus comentarios, puedo ver por qué lo anterior no funciona. Suponiendo que quiere decir que desea que el botón aparezca sólo después de desplazarse a la parte inferior (y no estar en la pantalla todo el tiempo), he aquí el diseño que recomiendo:

 <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> 

Agregue a GridView dos atributos:

  • Android: paddingBottom del tamaño como su botón;
  • Android: clipToPadding = "false"

Esto hará que haya espacio para el botón en la parte inferior de la cuadrícula.

Comprobar si esto ayuda

 <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" /> 
  • ¿Existe una forma estándar de agregar divisores entre los elementos de barra de acción en Android 3.0?
  • ¿Por qué android le da advertencia sobre el uso de tamaño menor que 12sp?
  • Establecer parámetros de diseño dinámicamente
  • ¿Cómo mostrar la notificación de Android cada 48 horas?
  • Android - java.lang.UnsupportedOperationException: No se puede convertir a dimension: type = 0x12
  • Cómo abordar problema de diseño cuando el usuario cambia tamaño de fuente en android?
  • Diseño deslizante como google maps v7
  • Cerrar Gaveta de navegación sin animación
  • cómo crear androide linearlayout con RTL orientación horizontal
  • ¿Cómo puedo configurar la altura de la celda GridView en función de la altura de la pantalla?
  • TextViews en la parte superior e inferior, el espacio restante lleno de ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.