1

Я попытался что-то сделать. Нажмите на значок в ActionBar, но ничего не делайте. Мне также нравится открывать drawer_layout при нажатии на значок в панели действий. Как сделать его кликабельным и обработать событие его нажатия?Как сделать клик по значку ActionBar в android

public class MainActivity extends AppCompatActivity { 
ViewPager viewPager,viewPager01; 
CustomSwipAdapter swip_adapter; 
CustomSwipAdapter01 swip_adapter01; 

String[] menu; 
DrawerLayout dLayout; 
ListView dList; 
ArrayAdapter<String> adapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    try{ 
     getSupportActionBar().setLogo(R.drawable.sample_01); 
     getSupportActionBar().setDisplayUseLogoEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setTitle(""); 
    } 
    catch (Exception e) { 
    } 
    viewPager = (ViewPager)findViewById(R.id.viewpager); 
    swip_adapter =new CustomSwipAdapter(this); 
    viewPager.setAdapter(swip_adapter); 

/* viewPager01 = (ViewPager)findViewById(R.id.viewpager01); 
    swip_adapter01 =new CustomSwipAdapter01(this); 
    viewPager01.setAdapter(swip_adapter01);*/ 

    menu = new String[]{"Home","E-Gift Voucher"}; 
    dLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
    dList = (ListView)findViewById(R.id.left_drawer); 
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,menu); 

    dList.setAdapter(adapter); 
    dList.setSelector(android.R.color.holo_blue_dark); 

    dList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      dLayout.closeDrawers(); 
      Bundle args = new Bundle(); 
      args.putString("Menu", menu[position]); 
      Fragment detail = new DetailFragment(); 
      detail.setArguments(args); 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.content_frame, detail).commit(); 
     } 
    }); 
} 
@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); 
    MenuInflater inf = getMenuInflater(); 
    inf.inflate(R.menu.main_activity_action,menu); 
    return super.onCreateOptionsMenu(menu);*/ 

    MenuInflater inf = getMenuInflater(); 
    inf.inflate(R.menu.main_activity_action,menu); 
    return true;//super.onCreateOptionsMenu(menu); 
} 

@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. 
    // int id = item.getItemId(); 

    switch (item.getItemId()){ 
     case android.R.id.home: 
      Toast.makeText(MainActivity.this,"Click on Logo",Toast.LENGTH_SHORT).show(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
    } 
} 
+1

действия бар устарел, используйте панель инструментов – theLazyFinder

+0

. Вы можете привести пример панели инструментов –

+0

http://www.androidhive.info/2015/04/android-getting-started-with-material-design/ – theLazyFinder

ответ

1

расположение XML

<RelativeLayout 
    android:id="@+id/rl_main_search_layout" 
    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:background="@color/transparent_semi" 
    tools:context="com.worldofmoms.views.fragments.search_and_explore.SearchFragment"> 

    <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar_search" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary" 
      android:minHeight="?attr/actionBarSize" 
      app:theme="@style/ActionBar_Light"/> 


    <android.support.v7.widget.RecyclerView 
     android:id="@+id/rv_search" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/toolbar_search" 
     android:background="@android:color/white" 
     android:visibility="gone" 
     /> 


</RelativeLayout> 

Добавить в вашей деятельности onCreate()

 mToolbar = (Toolbar) view.findViewById(R.id.toolbar_search); 
     setSupportActionBar(mToolbar); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

и добавить

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     int id = item.getItemId(); 
     if(id==android.R.id.home){ 
     // home button from toolbar clicked 
     } 
    } 
0

Добавить в вашей деятельности OnCreate(): я вполне уверен, что это может помочь вам ...

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

    // Custom code for image icon which redirects to homepage 
    ActionBar actionBar=getSupportActionBar(); 
    actionBar.setDisplayOptions(actionBar.getDisplayOptions() 
      | ActionBar.DISPLAY_SHOW_CUSTOM); 
    ImageView imageView = new ImageView(actionBar.getThemedContext()); 
    imageView.setScaleType(ImageView.ScaleType.CENTER); 
    imageView.setImageResource(R.mipmap.ic_launcher); 
    imageView.setOnClickListener(new OnClickListener() { 
     @Override public void onClick(View v) { 
      webViewPlaceholder.loadUrl("http://www.salebhai.com"); 
     } }); 
    ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
      ActionBar.LayoutParams.WRAP_CONTENT, 
      ActionBar.LayoutParams.WRAP_CONTENT, Gravity.LEFT 
      | Gravity.CENTER_VERTICAL); 
    layoutParams.leftMargin = 20; 
    imageView.setLayoutParams(layoutParams); 
    actionBar.setCustomView(imageView); 


    actionBar.setDisplayHomeAsUpEnabled(true); 

Спасибо,

счастливого Coding .....

+0

Пожалуйста, не отправляйте тот же ответ на несколько вопросов. Если одна и та же информация действительно отвечает на оба вопроса, тогда один вопрос (обычно более новый) должен быть закрыт как дубликат другого. Вы можете указать это путем [голосования, чтобы закрыть его как дубликат] (http://stackoverflow.com/help/privileges/close-questions), или, если у вас недостаточно репутации для этого, [поднять флаг] (http://stackoverflow.com/help/privileges/flag-posts), чтобы указать, что это дубликат. В противном случае убедитесь, что вы адаптируете свой ответ к * этому * вопросу и не просто вставляете один и тот же ответ в нескольких местах. –