Autore Topic: Icone nellla ActionBar  (Letto 833 volte)

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Icone nellla ActionBar
« il: 29 Maggio 2015, 09:02:46 CEST »
0
Non riesco a far apparire delle icone nella ActionBar, vorrei delle icone come nell'immagine che allego
(l'icona del "+" e delle due freccie).
Ho letto i seguenti link:

[facile] Uso dei Menu - Android Developers Italia

Utlizzo dei Menu con Action Bar , Fragment e SherlockActionBar - Android Developers Italia

il menu di contesto mi funziona, ma non riesco a far apparire l'icona.
Ho provato a scrivere il metodo "onCreateOptionsMenu()" due volte, una volta scrivendo le istruzioni java
(quello messo dentro commenti) e una volta facendo l'inflate del file XML "menu_main.xml"

Qualcuno puo' spiegarmi come fare per far apparire l'icona "ic_launcher.png" nella ActionBar?

********** MainActivity.java *********
Codice (Java): [Seleziona]
package prove.myapplication19;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button mioBottone=(Button) findViewById(R.id.button1);
        registerForContextMenu(mioBottone);
    }

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
    {
        menu.add(1,1,1,"Comando_1");
        menu.add(1,2,1,"Comando_2");
        menu.add(1,3,1,"Comando_3");
    }

    public boolean onContextItemSelected(MenuItem item)
    {
        int id=item.getItemId();
        if (id==1)
        {
            Toast.makeText(getApplicationContext(),"cliccato menu contesto item 1",
                    Toast.LENGTH_SHORT).show();
        }
        return true;
    }
    /*
    public boolean  onCreateOptionsMenu(Menu menu) {
        menu.add("Comando1").setIcon(R.drawable.ic_launcher);
        menu.add("Comando2");
        menu.add("Comando3");
        SubMenu submenu = menu.addSubMenu("Altri comandi");
        submenu.add("Comando4");
        submenu.add("Comando5");
        submenu.add("Comando6");
        return true;
    }
    */

    @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);
        return true;
    }
}

********** menu_main.xml **********
Codice (XML): [Seleziona]
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
       android:id="@+id/menu_add"
       android:orderInCategory="100"
       android:showAsAction="always"
       android:icon="@drawable/ic_launcher"
       android:title="menu_add"/>

    <item
       android:id="@+id/menu_refresh"
       android:orderInCategory="100"
       android:showAsAction="ifRoom|withText"
       android:title="menu_refresh"/>


    <item
       android:id="@+id/action_settings"
       android:orderInCategory="100"
       android:showAsAction="never"
       android:title="action_settings"/>

</menu>

********** activity_main.xml **********
Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/textView" />

    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="New Button"
       android:id="@+id/button1"
       android:layout_below="@+id/textView"
       />

</RelativeLayout>

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Icone nellla ActionBar
« Risposta #1 il: 30 Maggio 2015, 09:14:09 CEST »
0
Finora non ho ricevuto risposta, qualcuno puo' rispondere?

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 616
  • Respect: +136
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Icone nellla ActionBar
« Risposta #2 il: 30 Maggio 2015, 14:09:57 CEST »
0
Non ho risposto perché non vedo errori evidenti.

Per quanto riguarda il menù applicativo, le uniche anomalie che vedo sono:
- L'attributo android:orderInCategory nell'elemento "item": non dovrebbe esserci
- La onCreateOptionsMenu rovrebbe restituire super.onCreateOptionsMenu(menu);
- I titoli dei menù sono "anomali", es, mi aspettavo qualcosa tipo "@string/menu_add" invece di "menu_add"

In ogni caso sono errori minori che non dovrebbero influire sulla visualizzazione dei menù nella actionbar.

Per quanto riguarda il menù contestuale, non mi è chiaro cosa vuoi ottenere, ed anzi da quello che scrivi mi viene il dubbio che tu abbia fatto un po' di confusione.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Icone nellla ActionBar
« Risposta #3 il: 30 Maggio 2015, 14:35:58 CEST »
0
Ho modificato il programma come mi hai detto ma e' tutto come prima.
Ti allego la screenshot del programma, come puoi notare l'icona "ic_launcher.png" nella ActionBar NON appare.

********** MainActivity.java *********
Codice (Java): [Seleziona]
package prove.myapplication19;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button mioBottone=(Button) findViewById(R.id.button1);
        registerForContextMenu(mioBottone);
    }

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
    {
        menu.add(1,1,1,"Comando_1");
        menu.add(1,2,1,"Comando_2");
        menu.add(1,3,1,"Comando_3");
    }

    public boolean onContextItemSelected(MenuItem item)
    {
        int id=item.getItemId();
        if (id==1)
        {
            Toast.makeText(getApplicationContext(),"cliccato menu contesto item 1",
                    Toast.LENGTH_SHORT).show();
        }
        return true;
    }
    /*
    public boolean  onCreateOptionsMenu(Menu menu) {
        menu.add("Comando1").setIcon(R.drawable.ic_launcher);
        menu.add("Comando2");
        menu.add("Comando3");
        SubMenu submenu = menu.addSubMenu("Altri comandi");
        submenu.add("Comando4");
        submenu.add("Comando5");
        submenu.add("Comando6");
        return true;
    }
    */

    @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);

        return super.onCreateOptionsMenu(menu);
    }
}


********** menu_main.xml ********
Codice (XML): [Seleziona]
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
       android:id="@+id/menu_add"

       android:showAsAction="always"
       android:icon="@drawable/ic_launcher"
       android:title="menu_add"/>

    <item
       android:id="@+id/menu_refresh"

       android:showAsAction="ifRoom|withText"
       android:title="menu_refresh"/>


    <item
       android:id="@+id/action_settings"

       android:showAsAction="never"
       android:title="action_settings"/>

</menu>

********* activity_main.xml *********
Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/textView" />

    <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="New Button"
       android:id="@+id/button1"
       android:layout_below="@+id/textView"
       />

</RelativeLayout>

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 616
  • Respect: +136
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Icone nellla ActionBar
« Risposta #4 il: 30 Maggio 2015, 14:57:29 CEST »
0
Mi servirebbe sapere:
- Min API
- Target API
- Possibilmente uno screen con il menù aperto
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Icone nellla ActionBar
« Risposta #5 il: 30 Maggio 2015, 15:41:47 CEST »
0
Ti allego il "build.gradle" e lo screenshot con il menu aperto.

Codice: [Seleziona]
apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "prove.myapplication19"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}


Post unito: 30 Maggio 2015, 16:11:49 CEST
Vorrei l'icona "ic_launcher.png" sulla ActionBar in maniera simile all'immagine che allego (l'icona del "+" e
delle due freccie che ruotano).
« Ultima modifica: 30 Maggio 2015, 16:11:49 CEST da oberdank, Reason: Merged DoublePost »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 616
  • Respect: +136
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Icone nellla ActionBar
« Risposta #6 il: 30 Maggio 2015, 18:08:40 CEST »
0
Non saprei che dirti, secondo me dovrebbe andare.

Prova con questo XML

Codice (XML): [Seleziona]
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
      android:id="@+id/menu_add"
      android:showAsAction="ifRoom|withText"
      android:icon="@android:drawable/ic_menu_close_clear_cancel"
      android:title="menu_add"/>

    <item
      android:id="@+id/menu_refresh"
      android:title="menu_refresh"/>


    <item
      android:id="@+id/action_settings"
      android:title="action_settings"/>

</menu>
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Icone nellla ActionBar
« Risposta #7 il: 30 Maggio 2015, 18:17:54 CEST »
0
Provato e purtroppo e' tutto come prima, nella ActionBar non appare nessuna icona.

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 616
  • Respect: +136
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Icone nellla ActionBar
« Risposta #8 il: 30 Maggio 2015, 18:32:03 CEST »
0
Altra prova:

Codice (XML): [Seleziona]
<menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
     android:id="@+id/menu_add"
     app:showAsAction="ifRoom|withText"
     android:icon="@android:drawable/ic_menu_close_clear_cancel"
     android:title="menu_add"/>

    <item
     android:id="@+id/menu_refresh"
     android:title="menu_refresh"/>


    <item
     android:id="@+id/action_settings"
     android:title="action_settings"/>

</menu>
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Icone nellla ActionBar
« Risposta #9 il: 30 Maggio 2015, 18:47:35 CEST »
0
Provato e adesso FUNZIONA!
Dov'era l'errore? A me il programma mi sembra lo stesso di prima ...

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 616
  • Respect: +136
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Icone nellla ActionBar
« Risposta #10 il: 30 Maggio 2015, 18:52:47 CEST »
+1
Evidentemente stai usando le support library.

Siccome la tua app potrebbe girare in una versione di android che non riconosce l'attributo "showAsAction", è necessario definirlo in un altro namespace.

Quindi va aggiunta la definizione del namespace nell'intestazione:

xmlns:app="http://schemas.android.com/apk/res-auto"

Quindi usi app:showAsAction al posto di android:showAsAction
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline oberdank

  • Utente normale
  • ***
  • Post: 287
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core LTE
  • Play Store ID:
    BuzzOne
  • Sistema operativo:
    Windows 8.1
Re:Icone nellla ActionBar
« Risposta #11 il: 30 Maggio 2015, 18:55:56 CEST »
0
GRAZIE Ohmnibus, sei un pozzo di conoscenza!

Offline maoxx

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola atrix
Re:Icone nellla ActionBar
« Risposta #12 il: 23 Ottobre 2015, 21:15:25 CEST »
0
io non riesco a mostrare il logo della mia app sulla actionbar. Il funzionamento è ok. ma il logo non si vede.
nel manifest ho inserito il codice:
Codice (XML): [Seleziona]
 <application
       android:icon="@drawable/ic_info_traffico"
       android:label="@string/app_name_actionbar"
       android:theme="@style/Theme.AppCompat.Light"

ho provato anche con:
Codice (XML): [Seleziona]
 <application
       android:logo="@drawable/ic_info_traffico"
       android:label="@string/app_name_actionbar"
       android:theme="@style/Theme.AppCompat.Light"

ma comunque il logo non si vede.

Mi potete aiutare?