В Android ListActivity как применить форматирование макета к нижним колонтитулам? - PullRequest
2 голосов
/ 03 апреля 2010

В Android ListActivity я добавляю кнопку в качестве нижнего колонтитула в ListView. Как применить форматирование макета к этой кнопке, например центрирование и / или width = fill_parent?

Я пробовал несколько вещей, таких как использование setLayoutParams (), но не заставил его работать - нижний колонтитул всегда исчезает, когда я пытаюсь что-либо сделать.

Вот основной код, с которым я работаю

closeButton = new Button(this);
closeButton.setText(getResources().getString(R.string.title_closeprocess));
closeButton.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {               
            closeProcess();
        }

   });

getListView().addFooterView(closeButton);   

* обновление

Основываясь на ответе Кристофера, вот нижний колонтитул, который я добавляю в мой список, и код активности, который добавляет его в список:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/closebutton_layout"    
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toptable" 
    android:layout_width="fill_parent"
    android:stretchColumns="*" 
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" 
    android:layout_height="wrap_content">
    <TableRow>          
        <Button android:id="@+id/closebutton" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:text="Skip Question"
        android:gravity="center" 
        android:paddingTop="16dip">
    </Button>           
    </TableRow>         
</TableLayout>
</RelativeLayout>



ListView listView = getListView();

    closeButtonView = getLayoutInflater().inflate(R.layout.closebutton_layout, listView, false);
    closeButton = (Button)closeButtonView.findViewById(R.id.closebutton);       
    closeButton.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
            closeQuestion();                
        }

    });
listView.addFooterView(closeButtonView);

1 Ответ

3 голосов
/ 03 апреля 2010

Должен ли быть нижний колонтитул и прокручивать список? В противном случае вы можете просто добавить его внизу в макете XML, например ::10000

<LinearLayout
    android:orientation="vertical"
    android:weightSum="1">
  <ListView
      android:id="@id/android:list"
      android:layout_width="fill_parent"
      android:layout_weight="1" />
  <Button
      android:id="@+id/btn_close"
      ... />
</LinearLayout>

В качестве альтернативы, помещает ли ваша кнопка внутри LinearLayout, а затем добавляет , что в качестве справки нижнего колонтитула?


Edit:
Мой мозг действительно не был включен раньше.

Вы можете определить нижний колонтитул в отдельном XML-файле макета, затем надуть его и добавить как обычный нижний колонтитул. e.g.:

ListView lv = getListView();
View footer = getLayoutInflater().inflate(R.layout.list_footer, lv, false);
lv.addFooterView(footer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...