我想在我的工具栏中放置一个徽标,其中包含来自https://github.com/amulyakhare/TextDrawable的自定义图形。
但是这段代码什么也没显示TextDrawable drawable = TextDrawable.builder() .buildRound("A", Color.RED); getSupportActionBar().setLogo(drawable);
但是,如果我尝试使用“常规”可绘制对象,它将起作用。
getSupportActionBar().setLogo(R.drawable.ic_launcher);
提前致谢
最佳答案
编辑:Mike M.在评论中添加的解决方案效果很好,但看起来很糟糕:
这是此解决方案的代码:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TextDrawable drawable = TextDrawable.builder().beginConfig().width(40).height(40).endConfig()
.buildRound("A", Color.RED);
toolbar.setLogo(drawable);
注意:在此解决方案中,您需要设置
width()
徽标的height()
和TextDrawable
,因为它具有默认值-1
。否则,您将看不到TextDrawable
图标。这是因为
Toolbar
类使用logo
参数动态创建wrap_content
的原因。TextDrawable
占用ImageView
的宽度和高度,所以请不要使用wrap_content
值,否则它将获得默认的-1
值,并且您将看不到图像。取而代之的是,像下面的示例一样,设置硬编码的值
match_parent
或使用layout_weight
设置所需的TextDrawable
大小。这是我的解决方案-使用自定义工具栏创建TextDrawable徽标
创建名称为
action_bar.xml
的自定义布局将此代码放入其中
<ImageView
android:id="@+id/image_view"
android:layout_width="32dp"
android:layout_height="32dp"
tools:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:text="@string/app_name"
android:textColor="#ffffff"
android:textSize="24sp"
android:textAlignment="gravity"
android:gravity="center_vertical"/>
将以下代码添加到
onCreate
类中的MainActivity
方法中://SET A DRAWABLE TO IMAGEVIEW
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.actionbar_main);
TextDrawable drawable = TextDrawable.builder()
.buildRound("A", getResources().getColor(R.color.colorAccent));
ImageView imageView = (ImageView) findViewById(R.id.image_view);
imageView.setImageDrawable(drawable);
更改后,它应类似于:
希望对你有帮助