How to get view from drawer header layout with binding in activity?
If you set app:headerLayout="@layout/drawer_header
then you don't have to inflate the view again. You can just use .bind
instead of .inflate
.
You can get the already inflated header view and bind it like this:
View headerView = binding.navigationView.getHeaderView(0);
DrawerHeaderBinding headerBinding = DrawerHeaderBinding.bind(headerView);
Updated solution (13/11/2015)
Solution: Update your Design Support Library to 23.1.1
:
Changes for Design Support library
23.1.1
:
- Added the
getHeaderView
method to theNavigationView
class.- Fixed a transparent background issue for a
FloatingActionButton
object on devices running Android 4.0 (API level 15) and lower. (Issue 183315)
See https://developer.android.com/tools/support-library/index.html for more info
Original solution
I don't know why there is no method which provides header view attached programmatically.
Instead, here's two solutions:
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation);
View headerView = navigationView.inflateHeaderView(R.layout.header_layout)
ImageView iv = (ImageView)headerview.findViewById(R.id.your_image_view)
Or:
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation);
View headerView = LayoutInflater.from(this).inflate(R.layout.header_layout, navigationView, false);
navigationView.addHeaderView(headerView);
ImageView iv = (ImageView) headerView.findViewById(R.id.yourImageView)