2015-02-17 6 views
3

Я использую панель инструментов в своем приложении. Макет панели выглядит так. Я добавляю imageButton внутри панели инструментов в качестве пункта меню. (Это проблема?) Поскольку я новичок в панели инструментов, я не знаю, правильно ли это.Панель инструментов Пункт Нажмите

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/toolbar" 
android:layout_width="match_parent" 
android:layout_gravity="top" 
android:layout_height="@dimen/abc_action_bar_default_height_material" 
android:minHeight="?attr/actionBarSize" 
android:gravity="right" 
android:background="?attr/colorPrimaryDark"> 


<ImageButton 
    android:src="@drawable/ic_action_social_share" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:layout_gravity="right" 
    android:layout_marginRight="8dp" 
    android:background="?selectableItemBackground" 
    android:id="@+id/shareButton" /> 

<ImageButton 
    android:src="@drawable/ic_tag" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:layout_gravity="right" 
    android:layout_marginRight="8dp" 
    android:background="?selectableItemBackground" 
    android:id="@+id/tagButton" /> 

<ImageButton 
    android:src="@drawable/ic_action_action_bookmark" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:layout_gravity="right" 
    android:layout_marginRight="8dp" 
    android:background="?selectableItemBackground" 
    android:id="@+id/bookmarkButton" /> 

</android.support.v7.widget.Toolbar> 

И в onCreate:

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.newsdetail_activity); 
    mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(mActionBarToolbar); 
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setHomeButtonEnabled(true); 
} 

И onOptionItemSelected:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 


    switch (item.getItemId()) { 
     case android.R.id.home: 
      onBackPressed(); 
      break; 
     case R.id.shareButton: 

      Log.d(TAG, "SHARE BUTTON"); 

      break; 
    } 
    return true; 
} 

Щелчок на shareButton в панели инструментов не стреляя. Может ли кто-нибудь объяснить причину этого?

+0

Показать ' onCreateOptionsMenu' метод код –

+0

@Override public boolean onCreateOptionsMenu (меню меню) { return super.onCreateOptionsMenu (меню); } – Sunny

ответ

9

Я в конечном итоге, используя следующий код

ImageButton imageButton = (ImageButton) toolbar.findViewById(R.id.shareButton); 

     imageButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


      } 
     }); 

Я не знаю, если это правильный way.But работает

+0

Спасибо .... Это сработало ... –

0

изменение

case R.id.shareButton:  
      Log.d(TAG, "SHARE BUTTON");  
      break; 

в

case android.R.id.shareButton:  
     Log.d(TAG, "SHARE BUTTON");  
     break; 
0

Просто используйте это.

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

     actionbar = getActionBar(); 
     actionbar.setDisplayShowCustomEnabled(true); 
     actionbar.setCustomView(R.layout.action_bar_layout); 

     btnClick = (Button) findViewById(R.id.btnClick); 
     appIcon = (ImageView) findViewById(R.id.appIcon); 
     appName = (TextView) findViewById(R.id.appName); 

     appName.setOnClickListener(this); 
     appIcon.setOnClickListener(this); 
     btnClick.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
     case R.id.appName: 
      Toast.makeText(LauncherActivity.this, "You Clicked on App Name", Toast.LENGTH_LONG).show(); 
      break; 
     case R.id.appIcon: 
      Toast.makeText(LauncherActivity.this, "You Clicked on App Icon", Toast.LENGTH_LONG).show(); 
      break; 
     case R.id.btnClick: 
      Toast.makeText(LauncherActivity.this, "You Clicked on Button", Toast.LENGTH_LONG).show(); 
      break; 
     } 
    } 

Смотрите мой мерзавец проект here

+0

Я должен использовать панель инструментов в своем проекте – Sunny

+0

Это добавлено в уровень API 21. Что произойдет, если уровень API <21? Кстати, вы можете проверить эту ссылку. http://blog.xamarin.com/android-tips-hello-toolbar-goodbye-action-bar/ –

+0

или посмотреть эту ссылку ... http://www.101apps.co.za/index.php/articles/ using-toolbars-in-your-apps.html –

Смежные вопросы