在工具栏中放置一个图标

时间:2016-10-15 05:06:05

标签: android

我有一个只有菜单图标的工具栏,它以编程方式设置,如下所示:

    myToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(myToolbar);
    myToolbar.setTitleTextColor(Color.BLACK);
    ActionBar ab = getSupportActionBar();
    ab.setHomeAsUpIndicator(R.drawable.menu);
    ab.setDisplayHomeAsUpEnabled(true);

现在,我想在工具栏中有另一个图标,并将其与我的src图像和onClick方法相关联。正如您所看到的,我没有xml菜单文件,而且我也不想设置默认的android图标,所以我该如何执行此操作?

6 个答案:

答案 0 :(得分:0)

工具栏的主要用途是使用自定义布局! 您可以将任何UI元素(如按钮)添加到工具栏,然后在代码中找到它们。

答案 1 :(得分:0)

您可以通过提供布局文件或View对象将CustomView设置为ActionBar。在该自定义视图中,您可以执行任何操作。

以下是如何将自定义视图设置为操作栏

 protected void setCustomActionBarTitle(String title) {
        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setDisplayShowCustomEnabled(true);
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            actionBar.setCustomView(R.layout.layout_action_bar_title);
            TextView titleView = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
            titleView.setText(title);
            ImageView customIconImageView = (ImageView) actionBar.getCustomView().findViewById(R.id.custom_icon);
            customIconImageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // call my method on the activity
                }
            });
            ImageView imageView = (ImageView) actionBar.getCustomView().findViewById(R.id.up_icon);
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
                }
            });
        }
    } 

答案 2 :(得分:0)

您将不得不使用单独的xml文件到setup your菜单和define any extra buttons (item)。以下是示例菜单文件:

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

    <!-- "Mark Favorite", should appear as action button if possible -->
    <item
        android:id="@+id/action_favorite"
        android:icon="@drawable/ic_favorite_black_48dp"
        android:title="@string/action_favorite"
        app:showAsAction="ifRoom"/>

    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          app:showAsAction="never"/>

</menu>

答案 3 :(得分:0)

在菜单中添加所需的图标 - &gt; menu_main.xml

#include <stdio.h>
#include <string.h>

int isdigit(char c); 
int main()
{
    char *input
    int length;

    printf("Number or Letter\n");
    gets(input);
    input = (char*)malloc(sizeof(char)*strlen(input));
    printf(input[0]);
    return 0;
}

并在您的活动中

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ui.MainActivity">

<item
    android:id="@+id/action_scan"
    android:icon="@drawable/camera_icon"
    android:orderInCategory="100"
    android:title="@string/action_scan"
    android:visible="true"
    app:showAsAction="always" />

答案 4 :(得分:0)

这段代码对我有用,

 setSupportActionBar(toolbar);
    getSupportActionBar().setTitle(R.string.app_name);
    toolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite));
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });
    final ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

答案 5 :(得分:0)

使用此选项可将图标添加到工具栏中。覆盖这些方法并使用项目中的代码..

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    this.menu = menu;
    getMenuInflater().inflate(R.menu.menu_dashboard, menu);
    menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_about));
    menu.getItem(1).setIcon(getResources().getDrawable(R.drawable.street_view_icon));


    return true;
}



//Notification Icon

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // toggle nav drawer on selecting action bar app icon/title

    // Handle action bar actions click
    switch (item.getItemId()) {


       case R.id.action_notify_found:
       Intent aboutIntent=new Intent(DashboardActivity.this, HomeAboutActivity.class);
       startActivity(aboutIntent);


        case R.id.action_notify_found1:

       Intent ARStreetviewintent = new Intent(DashboardActivity.this, ARStreetviewActivity.class);
       startActivity(new Intent(DashboardActivity.this, StreetviewActivity.class));

        default:
            return super.onOptionsItemSelected(item);
    }
}

menu.xml文件

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




<!-- Notification Found -->
<item android:id="@+id/action_notify_found"
    android:icon="@drawable/about"
    android:title="About"
    app:showAsAction="ifRoom"
    />

<!-- Notification Found -->
<item android:id="@+id/action_notify_found1"
    android:icon="@drawable/street_view_icon"
    android:title="StreetView"
    app:showAsAction="ifRoom"
    />