簡體   English   中英

在ActionBarSherlock中使用自定義布局構建ActionMode

[英]Building ActionMode with custom layout in ActionBarSherlock

我剛剛開始使用ActionBarSherlock構建一些簡單的應用程序,在我的第一個屏幕中我有簡單的列表,我添加了新的菜單項,用於向列表添加新項目:

MenuItem newItem = menu.add("New");
newItem.setIcon(R.drawable.ic_compose_inverse)
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

現在當用戶選擇添加新項目時我想開始一個新的動作模式來添加新項目,這個動作模式應該包含一個帶文本框和按鈕的簡單布局,所以我創建了這個布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

        <EditText
            android:id="@+id/text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="text" >
        </EditText>
        <Button
            android:id="@+id/addBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/add" />
</LinearLayout>

所以現在我只需要在新的動作模式中將此布局設置為條形:

newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                actionMode = startActionMode(new MyAction(ListEditor.this));
                return true;
            }
        });

在我的行動中:

private final class MyAction implements ActionMode.Callback {
    ...
    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        View customNav = LayoutInflater.from(context).inflate(R.layout.add_item, null);
        getSupportActionBar().setCustomView(customNav);
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        return true;
    }
}

所以基本上我需要來自sherlock示例的ActionModes和CustomNavigation之間的東西,但問題是它將布局設置為主條,而不是為打開操作的新條。

有什么建議?

您可能希望在名為“setCustomView”的ActionMode類中使用該方法。

所以這樣的事情:

newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            actionMode = startActionMode(new MyAction(ListEditor.this));
            actionMode.setCustomView(customNav);
            return true;
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM