【问题标题】:Adding action bar in ListActivity在 ListActivity 中添加操作栏
【发布时间】:2012-04-18 07:26:04
【问题描述】:

我是 Android 的新手。我需要一些帮助和您的建议。
我从去年一月开始在 Android 工作,我在这里遇到了一些麻烦。我仍在为 Android 2.3 开发应用程序。非常非常简单的应用程序。 我已经阅读了有关操作栏的信息,并且我向诸如 greendroid、sherlock 操作栏和最后的 Johan Nilson 操作栏之类的库提出了建议。我仍然很难将它集成到我的应用程序中。所以我尝试创建自己的操作栏,但问题一一出现。其中之一:即使列表视图向下滚动,也很难将操作栏与我的 ListView 结合起来以保持在屏幕顶部。最后将action bar的布局生成到ListView的header中:

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();          
    }
});

如果我希望操作栏在列表视图布局中仍位于顶部,该怎么做?以及为什么按钮和图片按钮在点击时不起作用?

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    如果你能设法包含一个动作栏库,比如 Sherlock,那就简单多了:

        private class YourListActivity extends SherlockListActivity {
    
    }
    

    【讨论】:

      【解决方案2】:

      为什么要在 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()设置activity的内容视图:

      @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 &lt;merge&gt; and &lt;include&gt; tags.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多