ListFragment Layout desde xml
Cómo crear una distribución ListFragment (de la biblioteca de soporte v4) de xml? ListFragment
configura su diseño de forma programática, por lo que si desea modificarlo, debe ensuciar con agregar o quitar vista.
- ¿Cómo establecer la distancia entre textview y drawable en un botón?
- Cómo establecer la línea como un fondo utilizando xml (forma) a continuación para EditText?
- Analizar XML desde un sitio web a un dispositivo Android
- Xml a json en android
- Android SlidingPaneLayout se desvanece en las vistas incorrectas
- Fondo Android + texto + icono para un botón
- Eclipse para convertir atributos XML en entradas de estilo
- XML Lista de permisos de Android completa
- Vincular la vista personalizada de Android a una xml de diseño específico (¿es posible?)
- Botón hexagonal con área de toque hexagonal
- Cambiar el tamaño de una casilla de verificación en android
- Configuración de lint.xml de Android Studio
- Android: Lectura de XML desde un recurso local (para pruebas)
He convertido el diseño creado en xml, puede agregar / quitar sus widgets o, por ejemplo, agregar soluciones pulltorefresh
. No debes cambiar los ids necesarios. Debido a los ids internos necesarios para algunos de los widgets, una función auxiliar debe ser llamada y debe estar en el espacio de nombres de soporte v4 ya que las constantes son internas con visibilidad predeterminada.
list_loader.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/progress_container_id" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:visibility="gone" > <ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <FrameLayout android:id="@+id/list_container_id" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/empty_id" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false" > </ListView> </FrameLayout> </FrameLayout>
Y la clase ListFragmentLayout
en android.support.v4.app
(en tu proyecto, no necesitas modificar el soporte v4 jar)
package android.support.v4.app; import your.package.R; import android.view.View; public class ListFragmentLayout { public static void setupIds(View view) { view.findViewById(R.id.empty_id).setId(ListFragment.INTERNAL_EMPTY_ID); view.findViewById(R.id.progress_container_id).setId(ListFragment.INTERNAL_PROGRESS_CONTAINER_ID); view.findViewById(R.id.list_container_id).setId(ListFragment.INTERNAL_LIST_CONTAINER_ID); } }
En el fragmento que extiende ListFragment
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.list_loader, container, false); ListFragmentLayout.setupIds(view); return view; }
Desde el android sdk (ListFragment) ( http://developer.android.com/reference/android/app/ListFragment.html ):
Public View onCreateView (Inflador LayoutInflater, contenedor ViewGroup, Bundle savedInstanceState)
Proporcione la implementación predeterminada para devolver una vista de lista simple. Las subclases pueden reemplazarlas con su propio diseño. Si lo hace, la jerarquía de vista devuelta debe tener un ListView cuyo id es android.R.id.list y opcionalmente puede tener una identificación de la vista hermana android.R.id.empty que se mostrará cuando la lista esté vacía.
Si está sobreescribiendo este método con su propio contenido personalizado, considere la inclusión de la lista estándar layout_content en su archivo de diseño, para que siga reteniendo todo el comportamiento estándar de ListFragment. En particular, esta es actualmente la única manera de mostrar el estado de progreso indeterminado incorporado.
Así que cuando usted quiere que su propio layout.xml para un FragmentList overide onCreateView e inflar su propio diseño.
Por ejemplo:
Cree un diseño de Android ( yourlistlayout.xml ) y coloque el siguiente xml en la posición donde desea mostrar su ListFragment.
<ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" > </ListView>
En su clase ListFragment , coloque el código siguiente:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.yourlistlayout, null); return v; }