Android工具栏 - 以编程方式更改导航图标的高度和宽度

10 浏览
0 Comments

Android工具栏 - 以编程方式更改导航图标的高度和宽度

我想通过编程方式更改Android工具栏中导航图标(在屏幕截图中的黑色圆圈中)的高度和宽度。有没有办法这样做?这不是工具栏的徽标。我不能在Styles xml中更新工具栏主题,因为我希望它是动态的。请帮忙。

0
0 Comments

如果您使用的是appcompat Toolbar,它实际上就像一个普通的ViewGroup一样运作。因此,您可以像访问其他任何ViewGroup一样轻松地访问其中的视图。

例如,如果您的工具栏中有一个ImageView,您可以通过以下方式简单地访问它:

        getSupportActionBar().getCustomView().findViewById(R.id.imageView)

从那里,您可以像普通的ImageView一样调整其大小。

是的,我正在使用AppCompat Toolbar。有没有预定义的id用于导航图标?

0
0 Comments

问题的原因是想要在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中导航图标的高度和宽度了。

0
0 Comments

问题的出现原因是想要在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-programmaticallyconverting-pixels-to-dp来计算dp值。

第二种方法是在工具栏中使用自定义布局,代码如下:


    
    
    
    

如果想要访问工具栏中的任何视图,可以参考Stefanović的回答。关于创建自定义工具栏,可以查看Material design guidelines

以上就是解决Android工具栏更改导航图标高度和宽度的两种方法。

0