2017-09-06 77 views
2

我想在我的主菜單的操作欄上打開一個開關。空的空間在那裏,我可以點擊它,但沒有開關。什麼是解決方案?menuitem - 開關不顯示在ActionBar

提前致謝!

switch_layout.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/switchView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="horizontal"> 

<android.support.v7.widget.SwitchCompat 
    android:id="@+id/switchForActionBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=""/> 

activtiy_main_action.xml:這在你的菜單

<item 
    android:id="@+id/myswitch" 
    android:title="" 
    app:showAsAction="always" 
    android:actionLayout="@layout/switch_layout"> 
</item> 

MainActivity.java

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuinf = getMenuInflater(); 
    menuinf.inflate(R.menu.activity_main_action, menu); 
    //getMenuInflater().inflate(R.menu.mainmenu, menu); 

    return super.onCreateOptionsMenu(menu); 
} 

回答

2

變化

使用app:actionLayout="@layout/switch_layout"

insted的的 android:actionLayout="@layout/switch_layout"

<item 
    android:id="@+id/myswitch" 
    android:title="" 
    app:showAsAction="always" 
    app:actionLayout="@layout/switch_layout"> 
</item> 

和訪問下面的代碼

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.badge_menu, menu); 
    MenuItem item = menu.findItem(R.id.myswitch); 
    MenuItemCompat.setActionView(item, R.layout.switch_layout); 
    RelativeLayout notifCount = (RelativeLayout) MenuItemCompat.getActionView(item) 

    Switch switch_button = (Switch) notifCount.findViewById(R.id.switchForActionBar); 

    switch_button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // do something, the isChecked will be 
      // true if the switch is in the On position 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
} 
+1

您的開關使用交換機出現了!非常感謝您的快速幫助 –

+0

@johnnycigar不客氣。不要忘了upvote並標記我的答案爲接受 –

+0

*我想嘗試,但由於某種原因,我必須等待*完成 –