2015-10-23 15 views
7

Buna "menu_overflow" bunu nasıl Görünüm alabilirizMenü Öğesinin Eylem Görünümü Nasıl Alınır?

home.xml

<item 
    android:id="@+id/action_shopping_cart" 
    android:actionLayout="@layout/action_bar_cart_button" 
    android:showAsAction="ifRoom" 
    android:title="Shopping Cart" /> 
<item 
    android:id="@+id/action_notifications" 
    android:actionLayout="@layout/action_bar_notifications_button" 
    android:showAsAction="ifRoom" 
    android:title="Notifications" /> 
<item 
    android:id="@+id/menu_overflow" 
    android:orderInCategory="100" 
    android:icon="@drawable/ic_action_overflow" 
    android:showAsAction="always" 
    android:title="OverFlow"> 

    <menu> 
     <item 
      android:id="@+id/action_my_account" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="My Account" /> 
     <item 
      android:id="@+id/action_current_orders" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="My Orders" /> 
     <item 
      android:id="@+id/action_wish_list" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="My Wishlist" /> 
     <item 
      android:id="@+id/action_contact_us" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="Contact Us" /> 
     <item 
      android:id="@+id/action_logout" 
      android:orderInCategory="100" 
      android:showAsAction="never" 
      android:title="Logout" /> 
    </menu> 
</item> 

Benim Kod nedir?

İzlediğim yolu denedim:

Activity.java kodu

kamu boolean onCreateOptionsMenu (Menü menüsü) {

 final MenuItem item = menu.findItem(R.id.menu_overflow); 
     View view = (View) findViewById(R.id.menu_overflow); 
     new MaterialShowcaseView.Builder(this) 
         .setTarget(mOverFlowIcon) 
         .setRadius(10) 
         .setMaskColour(Color.argb(150, 0, 0, 0)) 
         .setContentText("Find Your Wishlist Here") // optional but starting animations immediately in onCreate can make them choppy 
         .setDismissOnTouch(true) 
         .show(); 
    return super.onCreateOptionsMenu(menu); 
} 

Ama görünümü dönüyor boş olduğunu.

Lütfen yardım edin ... thanx

+0

@Harshad Etkinlik Kod cevap için –

cevap

0

Bunu denediniz mi? senin xml adının

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 

     switch (item.getItemId()){ 
      case R.id.action_shopping_cart: 
       Toast.makeText(this, "action_shopping_cart", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_notifications: 
       Toast.makeText(this, "action_notifications", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.menu_overflow: 
       Toast.makeText(this, "menu_overflow", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_my_account: 
       Toast.makeText(this, "action_my_account", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_current_orders: 
       Toast.makeText(this, "action_current_orders", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_wish_list: 
       Toast.makeText(this, "action_wish_list", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_contact_us: 
       Toast.makeText(this, "action_contact_us", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.action_logout: 
       Toast.makeText(this, "action_logout", Toast.LENGTH_SHORT).show(); 
       break; 



     } 



     return super.onOptionsItemSelected(item); 
    } 

dikkatli olun

+0

Teşekkür edin lütfen ... Ben onOptionsCreate üzerinde menu_overflow görmek istiyorsunuz. Ben taşma simgesi için öğretici vitrine duyuyorum, bu yüzden neden Akış menüsünün görünümünü görmek istiyorum. Bunu nasıl elde edeceğinizi biliyor musunuz? –

8

Eğer onCreateOptionsMenu menü şişirme Are (yani home.xml olan)? OnCreateOptionsMenu yürütüldüğünde, xml şişirme, hemen şişirmek yerine, olay sırasına eklenir. FindViewById() öğesini çalıştırdığınızda boş göstericinize neden olan budur. Görünümünüzü bir İşleyiciye koymaya çalışın. İşleyici içindeki kod, mesaj sırasına eklenir ve bu nedenle menü şişirildikten sonra yürütülür. Bu, boş göstericinizi çözecektir. Böyle bir şey olacaktır:

@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); 
    new Handler().post(new Runnable() { 
     @Override 
     public void run() { 
      View view = (View) findViewById(R.id.menu_overflow); 
      new MaterialShowcaseView.Builder(this) 
        .setTarget(view) 
        .setRadius(10) 
        .setMaskColour(Color.argb(150, 0, 0, 0)) 
        .setContentText("Find Your Wishlist Here") // optional but starting animations immediately in onCreate can make them choppy 
        .setDismissOnTouch(true) 
        .show(); 
     } 
    }); 
    return true; 
} 
1

deneyin ile:

<item 
    android:id="@+id/menu_overflow" 
    android:orderInCategory="100" 
    android:icon="@drawable/ic_action_overflow" 
    android:title="OverFlow" 
    app:showAsAction="always" 
    app:actionViewClass="android.widget.ImageButton"> 

Not Bu satırları: Sen onPrepareOptionsMenu(Menu) yöntemini geçersiz kılarak MenuItem bir başvuru alabilirsiniz

app:showAsAction="always" 
    app:actionViewClass="android.widget.ImageButton" 
2

:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem actionViewItem = menu.findItem(R.id.your_menu_item); 
    return super.onPrepareOptionsMenu(menu); 
} 

Eğer bir başvuru istiyorsanız ActionView sen yöntemle MenuItemCompat.getActionView(MenuItem) ile yapabilirsiniz:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem actionViewItem = menu.findItem(R.id.your_menu_item); 
    View v = MenuItemCompat.getActionView(actionViewItem); 
    return super.onPrepareOptionsMenu(menu); 
} 
İlgili konular