在ListActivity中添加操作栏

时间:2012-02-18 06:59:37

标签: android android-actionbar

我是Android的新手。我在这里需要一些帮助和你的建议 我从1月份开始在Android工作,我在这里遇到了一些麻烦。我还在为Android 2.3开发应用程序。非常简单的应用程序。 我已经阅读了关于动作栏的内容,我已经向图书馆推荐了诸如greendroid,sherlock actionbar和最后一个Johan Nilson动作栏。我仍然难以将其集成到我的应用程序中。所以我尝试创建自己的操作栏,麻烦一个接一个地出现。其中之一:即使列表视图向下滚动,很难将操作栏与我的ListView结合起来仍然保持在屏幕顶部。最后,操作栏的布局生成ListView的标题:

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

和按钮& imagebutton不适用于点击事件..

//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 个答案:

答案 0 :(得分:2)

如果您可以设法包含其中一个Action Bar库,例如Sherlock,那么它将更加简单:

    private class YourListActivity extends SherlockListActivity {

}

答案 1 :(得分:0)

为什么要在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(...);
}

Article about <merge> and <include> tags