Tengo que mostrar tanto icon y title de acción dentro de ActionBar.

He intentado «withText» opción, pero no tiene ningún efecto.

Cómo mostrar icono y el título de acción en el interior ActionBar?

  • ¿este problema se resuelve finalmente? si es así, ¿qué es necesario hacer?
  • Parece que la respuesta está aquí: stackoverflow.com/questions/9282122/… En resumen, esto es por diseño, y usted tiene que proporcionar un diseño personalizado para trabajar alrededor de ella.

10 Comentarios

  1. 113

    siempre|withText‘ funcionará si hay espacio suficiente, de lo contrario, sólo el icono del lugar. Puedes probarlo en tu teléfono con la rotación.

    <item android:id="@id/menu_item"
    android:title="text"
    android:icon="@drawable/drawable_resource_name"
    android:showAsAction="always|withText" />
    • Hola Ing.Faouad No está funcionando para mí es allí cualquier cambio que tenemos que hacer mediante programación ?
    • No funciona, incluso hay un montón de habitaciones. El icono y el texto sólo puede ser mostrado en el paisaje.
    • no funciona conmigo sobre la actividad y el fragmento
    • esta respuesta se deja de usar ya que los programas generalmente se utiliza appCompact biblioteca
    • Esta respuesta, y los comentarios, son todavía válidas con la appcompat de la biblioteca.
  2. 22

    Puede crear acciones con el texto de 2 maneras:

    1 – Desde XML:

    <item android:id="@id/resource_name"
          android:title="text"
          android:icon="@drawable/drawable_resource_name"
          android:showAsAction="withText" />

    Al inflar el menú, usted debe llamar a getSupportMenuInflater() puesto que usted está utilizando ActionBarSherlock.

    2 – Programación:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT);
        item.setIcon(R.drawable.drawable_resource_name);
        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    
        return true;
    }

    Asegúrese de que usted importación de com.actionbarsherlock.view.Menu y com.actionbarsherlock.view.MenuItem.

    • MenuItem item = menu.add(Menu.NONE, ID, POSITION, TEXT); Aquí la ID es el diseño de id (por ejemplo, R. layout.myMenuItem), la POSICIÓN es la posición de los elementos que se muestran en la barra de acción (por ejemplo, 1,2,3 rtl), el TEXTO es el título que desea establecer para el actionbar elemento.
  3. 17

    Lo que funcionó para mí fue el uso de ‘siempre|withText‘. Si usted tiene muchos de los menús, considere el uso de ‘ifRoom’ en lugar de ‘siempre’.

    <item android:id="@id/resource_name"
    android:title="text"
    android:icon="@drawable/drawable_resource_name"
    android:showAsAction="always|withText" />
  4. 13

    La solución que me parece es que el uso de la acción personalizada de Diseño:
    Aquí es XML de menú.

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:Eventapp="http://schemas.android.com/apk/res-auto">
    <!-- This is a comment. -->
        <item
            android:id="@+id/action_create"
            android:actionLayout="@layout/action_view_details_layout"
            android:orderInCategory="50"
            android:showAsAction = "always"/>
    </menu>

    El Diseño es

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:gravity="center"
        android:text="@string/create"/>
    
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:gravity="center"
        android:src="@drawable/ic_action_v"/>
    
    </LinearLayout>

    esto mostrará el icono y el texto juntos.

    Para obtener el clickitem el fragmento o actividad:

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
    {
        //super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_details_fragment, menu);
        View view = menu.findItem(R.id.action_create).getActionView();
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_SHORT).show();
            }
        });
    }
    • en caso de que alguien este error «Error:(4) Nº de identificador de recursos encontrados para el atributo ‘actionlayout’ paquete ‘android'» esto se resuelve mediante la sustitución de «android:actionLayout» con «app:actionLayout»
    • así el efecto de la ondulación ido
    • De alguna manera esto no mostrar para mí – es simplemente ignorando el diseño y la visualización de nada o título, si me ofrecen es (por cierto ommiting título da advertencia, pero compila)
    • usted puede colocar android:background="?selectableItemBackground" para LinearLayout junto con android:clickable="true" y android:focusable="true"
    • Probablemente esto funciona, no estoy seguro, porque en mi caso nada se muestra en el menú, pero un botón que se pulse. Creo que dibujó el texto blanco sobre blanco de la Barra de herramientas. Para anular textcolor consulte stackoverflow.com/questions/43276345/….
  5. 1

    Si any1 en 2017 se está preguntando cómo hacer esto mediante programación, hay una manera que yo no veo en las respuestas

    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    • este icono sólo se muestra
  6. 1

    Puede agregar el botón en la barra de herramientas de

    <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            app:title="title">
    
            <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginRight="16dp"
                android:background="@color/transparent"
                android:drawableRight="@drawable/ic_your_icon"
                android:drawableTint="@drawable/btn_selector"
                android:text="@string/sort_by_credit"
                android:textColor="@drawable/btn_selector"
                />
    
        </android.support.v7.widget.Toolbar>

    crear el archivo btn_selector.xml en dibujable

    <?xml version="1.0" encoding="utf-8" ?>

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

    <item
        android:state_selected="true"
        android:color="@color/white"
        />
    <item
        android:color="@color/white_30_opacity"
        />

    java:

    privada boolean isSelect = false;

    OnClickListener para el botón:

    private void myClick() {
        if (!isSelect) {
           //**your code**//
            isSelect = true;
        } else {//**your code**//
            isSelect = false;
        }
        sort.setSelected(isSelect);
    }
    • Agregar el botón a la barra de herramientas de hecho funciona, aunque Android Studio dice «Elemento de Botón no se permite aquí …». (Sólo traté de que parte. No implementar la solución completa. Así que no sé, si todos los trabajos de cosas.)
  7. 0

    Algunos de ustedes tienen grandes respuestas, pero he encontrado algunas cosa más. Si desea crear un MenuItem con algunos Submenú mediante programación:

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            SubMenu subMenu = menu.addSubMenu(0, Menu.NONE, 0, "Menu title");
            subMenu.getItem().setIcon(R.drawable.ic_action_child);
            subMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    
            subMenu.add(0, Menu.NONE, 0, "Subitem 1");
            subMenu.add(0, Menu.NONE, 1, "Subitem 2");
            subMenu.add(0, Menu.NONE, 2, "Subitem 3");
    
            return true;
        }
  8. 0

    Trate de añadir un TextView a la barra de menús primer y el uso de setCompoundDrawables() para colocar la imagen en cualquier lado que usted desea. Vínculo haga clic en la actividad para el textview en la final.

    MenuItem item = menu.add(Menu.NONE, R.id.menu_item_save, 10, R.string.save);
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    TextView textBtn = getTextButton(btn_title, btn_image);
    item.setActionView(textBtn);
    textBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
               //your selector here   }
        });

    Usted puede literalmente personalizar todo aquí:

    public TextView getTextButton (String btn_title, Drawable btn_image) {
        TextView textBtn = new TextView(this);
        textBtn.setText(btn_title);
        textBtn.setTextColor(Color.WHITE);
        textBtn.setTextSize(18);
        textBtn.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD));
        textBtn.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
        Drawable img = btn_image;
        img.setBounds(0, 0, 30, 30);
        textBtn.setCompoundDrawables(null, null, img, null); 
        //left,top,right,bottom. In this case icon is right to the text
    
        return textBtn;
    }
  9. -1

    Uso de app:showAsAction=»siempre|withText».
    Estoy usando Android 4.1.1, pero debe aplicable de todos modos.
    Mina el aspecto siguiente

    <item
            android:id="@+id/action_sent_current_data"
            android:icon="@drawable/ic_upload_cloud"
            android:orderInCategory="100"
            android:title="@string/action_sent_current_data"
            app:showAsAction="always|withText"/>
  10. -3

    Siga estos pasos:

    1. Agregar la Barra de Acción de la instancia en el Código Java final ActionBar
      actionBar = getActionBar();
    2. Habilitar la Opción de Visualización de la Casa
      actionBar.setDisplayShowHomeEnabled(false);
    3. Agregue el código siguiente en la actividad respectiva del archivo de manifiesto
      android:[email protected]/logo and android:label="@string/actionbar_text"

    Creo que esto le ayudará a

Dejar respuesta

Please enter your comment!
Please enter your name here