Estoy intentando personalizar el diseño del fragmento devolviendo mi propia jerarquía de vista desde onCreateView(LayoutInflater, ViewGroup, Bundle)
. Esto infla mi vista personalizada, pero parece apilar las vistas en lugar de inflar dentro, veo todo a la vez. Cualquier ayuda es apreciada.Android + ListFragment con una jerarquía de vista personalizada
MyActivity.java:
public class MyActivity extends FragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
ArrayListFragment list = new ArrayListFragment();
getSupportFragmentManager().beginTransaction().add(android.R.id.content, list).commit();
}
}
public static class ArrayListFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
inflater.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.main, container);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String List[] = {"Larry", "Moe", "Curly"};
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, List));
}
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="THIS IS A BUTTON" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00FF00"
android:layout_weight="1"
android:drawSelectorOnTop="false" />
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="No data" />
</LinearLayout>
también tomar nota, estoy usando android-apoyo-v4. A partir de los documentos de android, que establece claramente: "ListFragment tiene un diseño predeterminado que consiste en una sola vista de lista Sin embargo, si lo desea, puede personalizar el diseño fragmento mediante la devolución de su propia vista de jerarquía de onCreateView (. LayoutInflater, ViewGroup, Bundle). Para hacer esto, su jerarquía de vistas debe contener un objeto ListView con el id "@android: id/list" (o una lista si está en el código ). " – worked