设置操作栏项的下拉列表

时间:2012-12-29 09:10:37

标签: android android-actionbar actionbarsherlock dropdownbox

我通过以下代码设置操作栏和项目,并显示相应的 image1 。当用户点击显示书签屏幕操作项时,它将转到其他活动。在该活动中,我希望在 SHOW BOOKMARK SCREEN 的位置显示另一个项目( SELECT BOOKMARK TYPE )。所以我想通过将相应的事物设置为真或假来用抽象类来管理它,如下所示。但现在我无法得到两件事。

1)如何区分两个操作项的情况0?因为我正在互相替换行动项目。

2)如何在图片2 中精确显示 SELECT BOOKMARK TYPE 的下拉列表。

已经看过很少的帖子,但由于我对android有点新,我无法理解并通过在我现有的代码中添加额外的代码来完成它。你能帮帮我吗?代码片段表示赞赏。提前谢谢。

public abstract class ActionActivity extends SherlockActivity {
    protected boolean mIsShowBookmarkScreen = true;


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

         if(mIsShowBookmarkScreen)
         {
             menu.add("SHOW BOOKMARK SCREEN")
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
         }

         else 
         {
             menu.add(SELECT BOOKMARK TYPE);
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
         }

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //This uses the imported MenuItem from ActionBarSherlock
        switch(item.getItemId())
        {

        case 0:
            Intent intent = new Intent(ActionActivity.this,BookmarkScreen.class);
            startActivity(intent);
            return true;
        }
        return false;
    }

     @Override
        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            getSupportActionBar().setHomeButtonEnabled(true);
        }

}

图片1:

enter image description here

图片2:

enter image description here

至少有人可以请求帮助实现第二个。我对第一个问题有了一个想法。

1 个答案:

答案 0 :(得分:1)

1)使用instanceof进行区分。

if (this instanceof ActivityA) {
    // start Intent A
} else if (this instanceof ActivityB) {
    // start Intent B
}

2)Spinner添加为自定义ActionView

<string-array name="items">
    <item>SELECT BOOKMARK TYPE</item>
    <item>TYPE-1</item>
    <item>TYPE-2</item>
    <item>TYPE-3</item>
</string-array>
MenuItem spinnerItem = menu.add(null);
spinnerItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
IcsSpinner spinner = new IcsSpinner(this, null);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this, R.array.items, R.layout.sherlock_spinner_item);
adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
        LayoutParams.MATCH_PARENT));
spinnerItem.setActionView(spinner);

请注意,我在这里使用私有IcsSpinner来创建SDK Version&lt; 4.0。有关详细信息,请参阅此answer

如果您想进一步自定义Spinner,则可能需要创建自己的Adapter