我有一個應用程序,其中有操作菜單項切換按鈕,雖然我使用操作欄Sherlock,我不知道,如何放置操作菜單項中的切換按鈕。我不想將其作爲自定義佈局放置在操作欄中,但我想將其作爲菜單項放置。如果有人找到解決方案,請幫助我。是否有可能實施切換按鈕在操作菜單中使用操作欄sherlock在android
目的,如果我改變切換按鈕的狀態,它會根據ALphabets排序人,並再次在出生日期。
在此先感謝!
我有一個應用程序,其中有操作菜單項切換按鈕,雖然我使用操作欄Sherlock,我不知道,如何放置操作菜單項中的切換按鈕。我不想將其作爲自定義佈局放置在操作欄中,但我想將其作爲菜單項放置。如果有人找到解決方案,請幫助我。是否有可能實施切換按鈕在操作菜單中使用操作欄sherlock在android
目的,如果我改變切換按鈕的狀態,它會根據ALphabets排序人,並再次在出生日期。
在此先感謝!
只需添加它像一個正常的菜單按鈕,用布爾變量檢查它的狀態,您可以更改圖標和標題改變sortmode
boolean birthSort=false;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_toggle:
if(birthSort){
//change your view and sort it by Alphabet
item.setIcon(icon1)
item.setTitle(title1)
birthSort=false;
}else{
//change your view and sort it by Date of Birth
item.setIcon(icon2)
item.setTitle(title2)
birthSort=true;
}
return true;
}
return super.onOptionsItemSelected(item);
}
時
不要忘了將它添加在XML像任何其他菜單按鈕,並配置android:showAsAction
如果你想顯示它在溢出或外面。
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_toogle"
android:showAsAction="ifRoom"
android:title="Share"
/>
</menu>
此外,您可以從android-sdk文件夾中抓取切換按鈕圖標 – wutzebaer 2013-07-20 21:40:02
但該視圖不是切換按鈕,這是正常的
其他的方法是使用自定義佈局你的動作條:
基本上你定義一個佈局包含您的切換:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ToggleButton
android:id="@+id/actionbar_service_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Logging On"
android:textOff="Logging Off" />
</RelativeLayout>
選擇1: 然後在你的活動或片段集裝箱你這樣做:那你有一個真正的切換按鈕,你正在處理它的代碼作爲一個真正的對象切換按鈕,它有很多的優點相比,有你重新實現自己的撥動
ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.actionbar_top);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM);
...
ToggleButton button = (ToggleButton) findViewById(R.id.actionbar_service_toggle);
通知(題材,可靠性,視圖層次結構,原生支持......)。
源代碼here。
選擇2: 另一種方式來做到這一點是嵌入自定義視圖到常規菜單視圖:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/myswitch"
android:title=""
android:showAsAction="always"
android:actionLayout="@layout/actionbar_service_toggle" />
</menu>
在菜單中創建XML文件:
menu.xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="si.ziga.switchinsideab.MainActivity">
<item android:id="@+id/switchId" android:title="" android:showasaction="always" android:actionlayout="@layout/switch_layout">
<item android:id="@+id/action_settings" android:orderincategory="100" android:title="@string/action_settings" app:showasaction="never">
</item></item></menu>
然後導航你的佈局文件夾中創建一個新的XML文件 並將其命名爲switch_layout.xml 下面的代碼: switch_layout.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="horizontal">
<switch android:id="@+id/switchAB" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_centervertical="true">
</switch></relativelayout>
在您的MainActivity類別複製並粘貼此代碼:
MainActivity。java的
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
switchAB = (Switch)menu.findItem(R.id.switchId)
.getActionView().findViewById(R.id.switchAB);7
,或點擊此link這個東西
如果像我一樣的actionLayout不爲你工作,嘗試app:actionLayout="@layout/actionbar_service_toggle"
而不是android:actionLayout="@layout/actionbar_service_toggle"
以及對app:showAsAction="always"
代替android:showAsAction="always"
這是因爲如果使用appCompat android命名空間將不會被使用。
因此,這裏的最終版本:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ToggleButton
android:id="@+id/actionbar_service_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Logging On"
android:textOff="Logging Off" />
</RelativeLayout>
和
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/myswitch"
android:title=""
app:showAsAction="always"
app:actionLayout="@layout/actionbar_service_toggle" />
</menu>
爲什麼你不希望使用自定義操作佈局? – 2013-02-19 13:06:41
我已經使用了自定義佈局的動作欄標題 – RajeshVijayakumar 2013-02-19 13:09:07
您不能在溢出菜單中放置一個「ToggleButton」。但是,溢出菜單可能支持可檢查的項目 - 我沒有嘗試過。 – CommonsWare 2013-02-19 13:12:46