ToggleButtons as actionBar custom view behaving we

2019-09-13 01:05发布

Firstly, my code for setting up the actionBar. (Using default system actionBar, android 4.2+)

@Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.listing_group, menu);
        MenuItem listItem = menu.findItem(R.id.action_list);
        ToggleButton customActionIcon = (ToggleButton) getLayoutInflater().inflate(R.layout.custom_action_bar_icon_view, null);
        listItem.setActionView(customActionIcon);
        customActionIcon.setTextOff("LIST");
        customActionIcon.setTextOn("LIST");
        customActionIcon.setTypeface(OswaldRegular());

        customActionIcon= (ToggleButton)getLayoutInflater().inflate(R.layout.custom_action_bar_icon_view, null);
        customActionIcon.setTextOff("MAP");
        customActionIcon.setTextOn("MAP");
        customActionIcon.setTypeface(OswaldRegular());
        MenuItem mapItem = menu.findItem(R.id.action_map);
        mapItem.setActionView(customActionIcon);
        return super.onCreateOptionsMenu(menu);
    }

Layout xml for Menu:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_list"
        android:showAsAction="always"
    />
    <item
        android:id="@+id/action_map"
        android:showAsAction="always"/>

</menu>

Layout xml for custom actionBar button:

<?xml version="1.0" encoding="utf-8"?>
<ToggleButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/action_bar_toggle_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="12sp"
    android:background="@color/transparent"
    android:textColor="@drawable/listing_group_activity_actionbar_text_color_selector">
</ToggleButton>

The Problem:

When the screen with this action bar first loads, both the buttons show up in the deselected color, but they both show the default text of "Off". When I click one of them, they correctly change color AND they change the text to the one I set in onCreateOptionsMenu(). i.e. , one becomes LIST and one becomes MAP . And then they continue to stay that way and function as normal ToggleButtons would. I would like them to start with the correct text showing, and after that is fixed I want one of them to be selected by default.

Any help on the matter is much appreciated! Thanks!

1条回答
倾城 Initia
2楼-- · 2019-09-13 01:29

Fixed. it. Had to do customActionIcon.setChecked(true) for the enabled one and setChecked(false) for the disabled one and they start with the right text and right state

查看更多
登录 后发表回答