Utwórz układ widoku stopki składający się z tekstu, który chcesz ustawić jako stopkę, a następnie spróbuj
View footerView = ((LayoutInflater) ActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
ListView.addFooterView(footerView);
Układ stopki mógłby wyglądać mniej więcej tak:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="7dip"
android:paddingBottom="7dip"
android:orientation="horizontal"
android:gravity="center">
<LinearLayout
android:id="@+id/footer_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_gravity="center">
<TextView
android:text="@string/footer_text_1"
android:id="@+id/footer_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dip"
android:textStyle="bold"
android:layout_marginRight="5dip" />
</LinearLayout>
</LinearLayout>
Klasą aktywności może być:
public class MyListActivty extends ListActivity {
private Context context = null;
private ListView list = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
list = (ListView)findViewById(android.R.id.list);
View footerView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
list.addFooterView(footerView);
}
}
NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that will also account for header and footer views.
Odpowiedzi tutaj są nieco nieaktualne. Chociaż kod pozostaje ten sam, nastąpiły pewne zmiany w zachowaniu.
public class MyListActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false); getListView().addFooterView(footerView); setListAdapter(new ArrayAdapter<String>(this, getResources().getStringArray(R.array.news))); } }
Informacje o
addFooterView()
metodzieWiększość powyższych odpowiedzi podkreśla bardzo ważny punkt -
Od Kitkat to się zmieniło.
Dokumentacja
źródło
Wiem, że to bardzo stare pytanie, ale przeszukałem tutaj i uznałem, że udzielona odpowiedź nie jest w 100% satysfakcjonująca, ponieważ jak wspomniałem gcl1 - w ten sposób stopka nie jest tak naprawdę stopką na ekranie - to tylko "dodatek ”do listy.
Podsumowując - dla innych, którzy mogą tutaj wygooglować swoją drogę - znalazłem tutaj następującą sugestię: Naprawiona i zawsze widoczna stopka poniżej ListFragment
Spróbuj wykonać następujące czynności, w których nacisk kładzie się na przycisk (lub dowolny element stopki) wymieniony jako pierwszy w pliku XML - a następnie lista zostanie dodana jako „layout_above”:
<RelativeLayout> <Button android:id="@+id/footer" android:layout_alignParentBottom="true"/> <ListView android:id="@android:id/list" **android:layout_above**="@id/footer"> <!-- the list --> </RelativeLayout>
źródło
Jeśli ListView jest elementem podrzędnym ListActivity:
getListView().addFooterView( getLayoutInflater().inflate(R.layout.footer_view, null) );
(wewnątrz onCreate ())
źródło
Działanie, w którym chcesz dodać stopkę widoku listy, a ja również wygenerowałem zdarzenie po kliknięciu stopki widoku listy.
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView list_of_f = (ListView) findViewById(R.id.list_of_f); LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.web_view, null); // i have open a webview on the listview footer RelativeLayout layoutFooter = (RelativeLayout) view.findViewById(R.id.layoutFooter); list_of_f.addFooterView(view); } }
activity_main.xml
<?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="@drawable/bg" > <ImageView android:id="@+id/dept_nav" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/dept_nav" /> <ListView android:id="@+id/list_of_f" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/dept_nav" android:layout_margin="5dp" android:layout_marginTop="10dp" android:divider="@null" android:dividerHeight="0dp" android:listSelector="@android:color/transparent" > </ListView> </RelativeLayout>
źródło
W tym pytaniu najlepsza odpowiedź nie działa dla mnie. Potem znalazłem tę metodę, aby wyświetlić stopkę widoku listy,
LayoutInflater inflater = getLayoutInflater(); ViewGroup footerView = (ViewGroup)inflater.inflate(R.layout.footer_layout,listView,false); listView.addFooterView(footerView, null, false);
I utwórz nowy układ call footer_layout
<?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"> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Done" android:textStyle="italic" android:background="#d6cf55" android:padding="10dp"/> </LinearLayout>
Jeśli nie działa, zapoznaj się z tym artykułem, usłysz
źródło
możesz użyć stackLayout, wewnątrz tego układu możesz umieścić listę w ramce, na przykład:
<StackLayout VerticalOptions="FillAndExpand"> <ListView ItemsSource="{Binding YourList}" CachingStrategy="RecycleElement" HasUnevenRows="True"> <ListView.ItemTemplate> <DataTemplate> <ViewCell > <StackLayout Orientation="Horizontal"> <Label Text="{Binding Image, Mode=TwoWay}" /> </StackLayout> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> <Frame BackgroundColor="AliceBlue" HorizontalOptions="FillAndExpand"> <Button Text="More"></Button> </Frame> </StackLayout>
oto wynik:
źródło