【问题标题】:Display logo in ActionBar在 ActionBar 中显示徽标
【发布时间】:2014-11-05 15:39:25
【问题描述】:

我有一个操作栏,但只是在其中显示应用程序的标题或/和当前片段活动的标题。我想在其中显示徽标,但任何添加徽标的尝试均未成功。

下面是代码:

public class MainActivity extends  ActionBarActivity {

    private String[] mOptionMenu;
    private DrawerLayout mDrawerLayout;
    private RelativeLayout mDrawerRelativeLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;

    private CharSequence mTitleSection;
    private CharSequence mTitleApp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView button=(ImageView)findViewById(R.id.logobutton);


        mOptionMenu = new String[] { "Opción 1", "Opción 2", "Opción 3" };
         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
         mDrawerRelativeLayout = (RelativeLayout)
         findViewById(R.id.left_drawer);
         mDrawerList = (ListView) findViewById(R.id.list_view_drawer);
         mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
         mOptionMenu));

         mDrawerList.setOnItemClickListener(new OnItemClickListener() {
         @Override
         public void onItemClick(AdapterView<?> parent, View view,
         int position, long id) {

         Fragment fragment = null;

         switch (position) {
         case 0:
         fragment = new FirstFragment();
         break;
         case 1:
         fragment = new SecondFragment();
         break;
         case 2:
         fragment = new ThirdFragment();
         break;
         }

         FragmentManager fragmentManager = getSupportFragmentManager();

         fragmentManager.beginTransaction()
         .replace(R.id.content_frame, fragment).commit();

         mDrawerList.setItemChecked(position, true);

         mTitleSection = mOptionMenu[position];
         getSupportActionBar().setTitle(mTitleSection);

         mDrawerLayout.closeDrawer(mDrawerRelativeLayout);
         }
         });
         mDrawerList.setItemChecked(0, true);
         mTitleSection = getTitle();
         mTitleApp = getTitle();

         mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
         R.drawable.ic_drawer, R.string.drawer_open,
         R.string.drawer_close) {

         public void onDrawerClosed(View view) {
             getSupportActionBar().setTitle(mTitleSection);
             getSupportActionBar().setLogo(R.drawable.logo);

         ActivityCompat.invalidateOptionsMenu(MainActivity.this);
         }

         public void onDrawerOpened(View drawerView) {
             getSupportActionBar().setTitle(mTitleSection);
         ActivityCompat.invalidateOptionsMenu(MainActivity.this);
         getSupportActionBar().setLogo(R.drawable.logo);

         }
         };

         mDrawerLayout.setDrawerListener(mDrawerToggle);

         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
         getSupportActionBar().setHomeButtonEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main_activity_actions, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }

        switch (item.getItemId()) {
        case R.id.action_settings:
            Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show();
            ;
            break;
        default:
            return super.onOptionsItemSelected(item);
        }

        return true;
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
}

我尝试在代码中添加这一行,但没有显示图像:

 getSupportActionBar().setLogo(R.drawable.logo);

我也有类似的担忧,因为我希望徽标可点击并将用户引导至 MainActivity

【问题讨论】:

    标签: java android android-activity android-fragments


    【解决方案1】:

    你必须通过调用getSupportActionBar().setDisplayUseLogoEnabled(true)在你的ActionBar上启用Logo功能。

    【讨论】:

    • 我添加了 getSupportActionBar().setDisplayUseLogoEnabled(true);在 onCreate 下
    • 但由于某种原因仍然没有显示
    【解决方案2】:

    按以下顺序在您的OnCreate 中尝试:

    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    

    【讨论】:

      【解决方案3】:

      在您的清单中,您可以在您的&lt;application&gt; 节点上设置android:logo="@drawable/logo",和/或为每个&lt;activity&gt; 节点设置android:icon="@drawable/icon"

      【讨论】:

      • 应用这两个选项,可惜还是没有显示
      【解决方案4】:

      在您的 mainfest 文件中,在 &lt;application&gt; 下添加:

      android:icon="@drawable/logo"
      

      【讨论】:

      • 谢谢。这已经被添加了。我觉得这个问题与代码更相关
      猜你喜欢
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 2014-03-23
      • 2013-12-27
      • 2021-10-11
      相关资源
      最近更新 更多