Добавление панели действий в ListActivity - PullRequest
5 голосов
/ 18 февраля 2012

Я очень новичок в Android.Мне нужна помощь и ваше предложение здесь.
Я работаю в Android с прошлого января, у меня возникли некоторые проблемы.Я все еще работаю над приложением для Android 2.3.Очень очень простое приложение.Я читал о панели действий и предлагаю библиотеке, такой как greendroid, панель действий Шерлока и последнюю панель действий Йохана Нильсона.У меня все еще есть трудности, чтобы интегрировать его в мое приложение.Поэтому я пытаюсь создать свою собственную панель действий, и проблема приходит одна за другой.Один из них: трудно совмещать панель действий с моим ListView, чтобы оставаться в верхней части экрана даже при прокрутке списка вниз.Наконец макет панели действий сгенерирован в заголовок ListView:

View header = getLayoutInflater().inflate(R.layout.header, null);
ListView listView = getListView();
listView.addHeaderView(header);

и кнопка & кнопка изображения не работают для события нажатия ..

//try action button in actionbar
Menu1 = (Button) this.findViewById(id.button1);
Menu1.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v)
    {
        Toast.makeText(List_direktoriJson.this, "action bar..", Toast.LENGTH_LONG).show();          
    }
});

Как, если я хочупанель действий по-прежнему находится в верхней части списка?А почему кнопка и кнопка изображения не работают при нажатии?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2012

Если вам удастся включить одну из библиотек Action Bar, например, Sherlock, это будет намного проще:

    private class YourListActivity extends SherlockListActivity {

}
0 голосов
/ 21 февраля 2012

Почему вы добавляете панель действий в заголовок ListView?Если вы сделаете это, панель действий всегда будет прокручиваться вместе с ListView.Добавьте панель действий в макет вашей ListActivity.Что-то вроде:

<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <include 
        android:id="@+id/action_bar"
        layout="@layout/header" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent" 
        android:layout_height="match_parent" />

    <!-- May be some other views -->

</merge>

Затем в onCreate() установите представление содержимого действия:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.layout_of_the_activity);
    setListAdapter(...);

    // get action bar view
    View header = findViewById(R.id.action_bar);

    // and then set click listeners. Note that findViewById called on header, not on this
    Menu1 = (Button) header.findViewById(R.id.button1);
    Menu1.setOnClickListener(...);
}

Статья о <merge> и <include> тегах .

...