在HeaderView

时间:2016-03-14 19:27:21

标签: java android android-imageview android-view android-navigationview

所以我对Android Studio和Android编程整体处于新的一面。我正在开发一个应用程序(其中一个功能)将从Facebook提取用户的个人资料图片,并相应地更改ImageView中的Navigation Drawer(例如在Gmail应用程序上)它显示您的G +个人资料图片)。 Facebook位可以留一天,但过去两个半小时我一直遇到某个问题,可能需要一些帮助。我的onCreate方法如下所示:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    View headerView = navigationView.inflateHeaderView(R.layout.nav_header_main);

    imgProfilePic = (ImageView) headerView.findViewById(R.id.imgProfilePic);

    imgProfilePic.setImageResource(R.drawable.troll_face);
}

我的很多onCreate方法仍然很“香草”,我认为问题出在NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);之前。我在这里遇到的主要问题是,我的Navigation Drawer中的2个标题现在显示在彼此之下,.setImageResource()之前的常规标题和之后(资源更改之后)它

关于这个问题,我做了很多谷歌搜索,有些人提到这是由于Android Studio中的一个错误。

对我的问题的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在我的应用程序中,我以这种方式显示图片:

if (mNavigationView.getHeaderCount() > 0) {
        ImageView mBackground = (ImageView) mNavigationView.getHeaderView(0).findViewById(R.id.user_background);
        CircleImageView mUserIcon = (CircleImageView) mNavigationView.getHeaderView(0).findViewById(R.id.user_icon);

        Glide.with(this).load(R.drawable.background).centerCrop().into(mBackground);
        Glide.with(this).load(R.drawable.me).centerCrop().into(mUserIcon);
    }

我建议你使用Glide甚至是从资源中设置图片。该库可压缩图片大小,从而使您的应用程序更快地运行。

关于这个问题 - 你必须寻找第一个也是唯一的标题。这就是本期的诀窍:))