una toma simple mixto luz interruptor instalar enchufes enchufe electrica doble cómo conectar como combinado bticino android android-layout

toma - ¿Cómo agregar un interruptor a la barra de acción de Android?



como instalar un interruptor mixto (4)

Me gustaría agregar un botón de cambio similar al aspecto nativo de jellybean. (Interruptor azul / gris en la parte superior de la vista)

La documentación muestra cómo crear un menú allí o agregar iconos, pero no dice cómo agregar elementos personalizados. p.ej. Un interruptor. http://developer.android.com/guide/topics/ui/actionbar.html


Finalmente descubrí mi problema: para aquellos que usan el nuevo AppCompat, deberían usar android.support.v7.widget.SwitchCompat vez de Switch el diseño del interruptor ... de lo contrario, no se mostrará en el ActionBar (se supone que está usando AppCompat ActionBar también), bueno, el atributo actionLayout no funciona, tiene que estar configurado en el código.

<?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="match_parent" android:layout_height="wrap_content" android:text="" /> </RelativeLayout>

Luego configura el diseño en el código:

@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_main, menu); MenuItem item = menu.findItem(R.id.on_off_switch); item.setActionView(R.layout.on_off_switch); return true; }


La solución dada por Ezequiel es asombrosa y funciona. Aquí hay otro enfoque:

Define tu diseño personalizado:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" > <Switch android:id="@+id/actionbar_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> </RelativeLayout>

Inflarlo programáticamente:

ActionBar actionBar = getSupportActionBar(); actionBar.setCustomView(R.layout.actionbar_top); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM); ... Switch button = (Switch) findViewById(R.id.actionbar_switch);


Si el widget no aparece en la barra de acciones, probablemente se deba a que está utilizando appCompat para su barra de acciones. Para resolver este cambio, "android:" a "aplicación:" frente a "showAsAction" y "actionLayout" en tu menú.xml

Agregue el elemento a xml, con la aplicación: en lugar de Android:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/myswitch" android:title="" app:showAsAction="always" app:actionLayout="@layout/switch_layout" /> </menu>

Haz el diseño que estás usando para tu "aplicación: actionLayout"
switch_layout

<?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" /> </RelativeLayout>

Infle el menú en su ActionBarActivity como lo haría normalmente

getMenuInflater().inflate(R.menu.mainmenu, menu); return true;

Esto debería hacer que el interruptor aparezca en su barra de acciones, si no aparecía.


Cree un diseño para el interruptor switch_layout.xml . Los diseños personalizados para el menú siempre deben ser RelativeLayout

<?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/switchForActionBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> </RelativeLayout>

Luego, en su mainmenu.xml agregue el elemento de la siguiente manera

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/myswitch" android:title="" android:showAsAction="always" android:actionLayout="@layout/switch_layout" /> </menu>

Y en su actividad, infle el mainmenu.xml como siempre lo hace

getMenuInflater().inflate(R.menu.mainmenu, menu); return true;