ActionBar在特定片段中显示项目?

时间:2014-12-13 18:03:55

标签: android android-actionbar

我有一个片段,当这个片段可见时,我想在我的ActionBar中显示一个项目。该项目是聊天图标,我想在ActionBar右侧显示此项目。

如何在片段可见时显示项目。 ?

我正在尝试这个。

<!--Chat Button Item -->
    <item
        android:id="@+id/action_chat"
        android:icon="@drawable/batalha_icon_chat"
        android:title="Chat"
        app:showAsAction="never"
        />

动作条

public class ChatFrag extends Fragment implements View.OnClickListener {

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.chat, container, false);

        /** action bar */
        ActionBar actionBar = ((CustomDrawerLayout)getActivity()).getSupportActionBar();
        actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.action_bar)));
        actionBar.setTitle("Chat with your opponent");

return rootView();

}

1 个答案:

答案 0 :(得分:1)

我已经完成了与您的情况类似的send按钮。

在menu_recipients.xml中,按如下方式添加send

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.ui.RecipientsActivity">
    <item android:id="@+id/action_send"
        android:title="@string/action_send"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:visible="false"
        android:icon="@drawable/ic_menu_send"/>
</menu>

在java文件中:

protected MenuItem mSendMenuItem;

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_recipients, menu);
        mSendMenuItem = menu.getItem(0);
        return true;
    }

protected AdapterView.OnItemClickListener mOnItemClickListener =
        new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (mGridView.getCheckedItemCount() > 0) { // change to check your Fragment
                    mSendMenuItem.setVisible(true);
                } else {
                    mSendMenuItem.setVisible(false);
                }
            }
        };