使用自定义视图作为操作栏图标

埃文

我正在尝试使用自定义视图作为向上按钮旁边的图标。我在线搜索了一个解决方案,并阅读了一些有关使用图形缓存的信息,并尝试在我的代码中实现该解决方案,但未显示任何图标。

    ActionBar bar = getSupportActionBar();
    bar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.scheme_dark_blue)));
    bar.setTitle(i.getStringExtra("schoolDay"));
    CalendarIcon icon = (CalendarIcon) getLayoutInflater().inflate(R.layout.icon_calendar, null);
    icon.setDrawingCacheEnabled(true);
    day = Integer.parseInt(i.getStringExtra("date"));
    icon.setData(day + "");
    icon.buildDrawingCache();
    bar.setIcon(new BitmapDrawable(getResources(), icon.getDrawingCache()));
    bar.setDisplayHomeAsUpEnabled(true);

谢谢你的帮助 :)

徐小龙

您的代码可能无法正常工作,因为视图还没有大小。我还建议您不要使用绘图缓存,而应在画布上绘制视图。

我写了一个小例子,当视图还没有大小时就给它一个大小。您可能需要调整一下代码以适应您的需求。

例子:

public static Drawable createDrawableFromView(View v, int requestedWidth, int requestedHeight) {
    // Because the view is never shown it does not have a size, but if shown don't resize it.
    if (v.getMeasuredHeight() <= 0) {

        // You may want to change these lines according to the behavior you need.
        int specWidth = MeasureSpec.makeMeasureSpec(requestedWidth, MeasureSpec.AT_MOST);
        int specHeight = MeasureSpec.makeMeasureSpec(requestedHeight, MeasureSpec.AT_MOST);
        v.measure(specWidth, specHeight);
    }
    Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    v.draw(c);
    return new BitmapDrawable(v.getContext().getResources(), b);
}

用法:

getActionBar().setTitle("View to icon test");
TextView view = new TextView(this);
view.setText("AI");
view.setGravity(Gravity.CENTER);
view.setTextColor(Color.RED);
getActionBar().setIcon(createDrawableFromView(view, 250, 250));

结果:

结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以在操作栏上同时显示标题和自定义视图?

来自分类Dev

自定义标签栏图标颜色

来自分类Dev

带有自定义按钮的android自定义操作栏视图

来自分类Dev

setDisplayHomeAsUpEnabled不显示带有自定义操作栏视图的后退箭头

来自分类Dev

在操作栏中搜索无法与列表视图的自定义适配器一起正常使用

来自分类Dev

Android:自定义操作栏,如何使用整个宽度?

来自分类Dev

如何打开和关闭导航抽屉,单击Android中的自定义操作栏图标?

来自分类Dev

Android:隐藏自定义操作栏图标

来自分类Dev

在“自定义”操作栏中,如果我们在操作栏中隐藏了需要由其他图标或文本视图占用空间的任何图标

来自分类Dev

每个视图的自定义导航栏

来自分类Dev

将自定义图像视图设置为操作栏的菜单图标

来自分类Dev

创建自定义操作标签栏

来自分类Dev

在操作栏中实现自定义视图样式

来自分类Dev

Android中的操作栏上的“自定义”视图问题

来自分类Dev

使用appcompat自定义操作栏布局

来自分类Dev

自定义图片作为标题栏中的图标

来自分类Dev

将图标添加到自定义操作栏

来自分类Dev

添加自定义导航抽屉操作栏图标

来自分类Dev

如何为操作栏创建自定义图标?

来自分类Dev

如何自定义操作栏

来自分类Dev

使用自定义图像作为UINavigationController导航栏的背景

来自分类Dev

Excel 2010:使用图标列表作为自定义列表

来自分类Dev

导航抽屉图标在自定义操作栏上不可见?

来自分类Dev

如何使用自定义操作栏?

来自分类Dev

自定义操作栏视图-未填充高度

来自分类Dev

Android:隐藏自定义操作栏图标

来自分类Dev

自定义图像作为操作栏徽标边距?

来自分类Dev

使用自定义标签栏交换视图

来自分类Dev

如何使用标签栏自定义设计滚动视图?

Related 相关文章

  1. 1

    是否可以在操作栏上同时显示标题和自定义视图?

  2. 2

    自定义标签栏图标颜色

  3. 3

    带有自定义按钮的android自定义操作栏视图

  4. 4

    setDisplayHomeAsUpEnabled不显示带有自定义操作栏视图的后退箭头

  5. 5

    在操作栏中搜索无法与列表视图的自定义适配器一起正常使用

  6. 6

    Android:自定义操作栏,如何使用整个宽度?

  7. 7

    如何打开和关闭导航抽屉,单击Android中的自定义操作栏图标?

  8. 8

    Android:隐藏自定义操作栏图标

  9. 9

    在“自定义”操作栏中,如果我们在操作栏中隐藏了需要由其他图标或文本视图占用空间的任何图标

  10. 10

    每个视图的自定义导航栏

  11. 11

    将自定义图像视图设置为操作栏的菜单图标

  12. 12

    创建自定义操作标签栏

  13. 13

    在操作栏中实现自定义视图样式

  14. 14

    Android中的操作栏上的“自定义”视图问题

  15. 15

    使用appcompat自定义操作栏布局

  16. 16

    自定义图片作为标题栏中的图标

  17. 17

    将图标添加到自定义操作栏

  18. 18

    添加自定义导航抽屉操作栏图标

  19. 19

    如何为操作栏创建自定义图标?

  20. 20

    如何自定义操作栏

  21. 21

    使用自定义图像作为UINavigationController导航栏的背景

  22. 22

    Excel 2010:使用图标列表作为自定义列表

  23. 23

    导航抽屉图标在自定义操作栏上不可见?

  24. 24

    如何使用自定义操作栏?

  25. 25

    自定义操作栏视图-未填充高度

  26. 26

    Android:隐藏自定义操作栏图标

  27. 27

    自定义图像作为操作栏徽标边距?

  28. 28

    使用自定义标签栏交换视图

  29. 29

    如何使用标签栏自定义设计滚动视图?

热门标签

归档