Android工具栏 - 以编程方式更改导航图标的高度和宽度
问题的原因是想要在Android Toolbar中通过编程方式改变导航图标的高度和宽度。解决方法是在AppCompatActivity中使用以下代码,同时在XML文件中设置Toolbar的高度和样式,在styles.xml文件中设置Toolbar的样式,在dimens.xml文件中设置文本大小和默认按钮高度,在colors文件中设置文本颜色和Toolbar背景颜色。
在AppCompatActivity中使用以下代码:
if(getSupportActionBar()!=null){ getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } toolbar.setNavigationOnClickListener(new View.OnClickListener() { public void onClick(View v) { getSupportFragmentManager().popBackStack(); } });
在XML文件中设置Toolbar的高度和样式:
在styles.xml文件中设置Toolbar的样式:
在dimens.xml文件中设置文本大小和默认按钮高度:
14sp 22sp 90dp
在colors文件中设置文本颜色和Toolbar背景颜色:
/clean_white #434343
这样就可以通过编程方式改变Android Toolbar中导航图标的高度和宽度了。
问题的出现原因是想要在Android工具栏中更改导航图标的高度和宽度,但是没有找到直接的方法来实现。解决方法有两种:一种是使用代码对导航图标进行缩放和着色,另一种是在工具栏中使用自定义布局来替代默认的导航图标。
第一种方法的代码如下:
toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); if(getSupportActionBar()!=null){ Drawable drawable= getResources().getDrawable(R.drawable.ic_sync_white_36dp); Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); Drawable newdrawable = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 250, 250, true)); newdrawable.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(newdrawable); }
在创建缩放的位图时,可以使用calculate-dp-from-pixels-in-android-programmatically和converting-pixels-to-dp来计算dp值。
第二种方法是在工具栏中使用自定义布局,代码如下:
如果想要访问工具栏中的任何视图,可以参考Stefanović的回答。关于创建自定义工具栏,可以查看Material design guidelines。
以上就是解决Android工具栏更改导航图标高度和宽度的两种方法。