ToggleButtons作为actionBar自定义视图表现得很奇怪。

时间:2014-01-14 15:51:42

标签: android android-actionbar togglebutton

首先,我的代码用于设置actionBar。 (使用默认系统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);
    }

菜单的布局xml:

<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>

自定义actionBar按钮的布局xml:

<?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>

问题:

当首次加载此操作栏的屏幕时,两个按钮都会以取消选择的颜色显示,但它们都显示默认文本“关闭”。当我单击其中一个时,它们会正确地更改颜色,并将文本更改为我在onCreateOptionsMenu()中设置的文本。即,一个变为LIST,一个变为MAP。然后他们继续保持这种方式并像普通ToggleButtons那样运作。我希望他们从正确的文本显示开始,然后修复后我希望默认选择其中一个。

非常感谢有关此事的任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

固定。它。必须为已启用的一个执行customActionIcon.setChecked(true),对于禁用的一个执行setChecked(false),并且它们以正确的文本和正确的状态开始