Android 设置文本视图';这幅画可以用壁画画出来

Android 设置文本视图';这幅画可以用壁画画出来,android,fresco,Android,Fresco,我已经为此奋斗了一段时间,使用以下指南: 但它建议编写我自己的onDraw方法,我只想设置TextView的复合绘图。我该怎么做呢?您不需要重写onDraw,因为TextView已经为您完成了这项工作。您可以这样做: class MyTextView extends TextView { MultiDraweeHolder mMultiDraweeHolder; // called from constructors private void init() { mMult

我已经为此奋斗了一段时间,使用以下指南:


但它建议编写我自己的onDraw方法,我只想设置TextView的复合绘图。我该怎么做呢?

您不需要重写onDraw,因为TextView已经为您完成了这项工作。您可以这样做:

class MyTextView extends TextView {
  MultiDraweeHolder mMultiDraweeHolder;

  // called from constructors
  private void init() {
    mMultiDraweeHolder = new MultiDraweeHolder<GenericDraweeHierarchy>();
    GenericDraweeHierarchyBuilder builder = 
        new GenericDraweeHierarchyBuilder(getResources());
    for (int i = 0; i < 4; i++) {
      GenericDraweeHierarchy hierarchy = builder.reset()
        .set...
        .build();
      mMultiDraweeHolder.add(
          new DraweeHolder<GenericDraweeHierarchy>(hierarchy, getContext()));
  }
类MyTextView扩展了TextView{
多付款人MM多付款人;
//从构造函数调用
私有void init(){
mmultipureholder=新的多抽屉文件夹();
GenericDraweeHierarchyBuilder生成器=
新的GenericDraweeHierarchyBuilder(getResources());
对于(int i=0;i<4;i++){
GenericDraweeHierarchy层次结构=builder.reset()
设置
.build();
mmultiprayeholder.add(
新的抽屉文件夹(层次结构,getContext());
}
要实际设置URI和界限,请执行以下操作:

// build DraweeController as in Fresco docs
DraweeHolder<GenericDraweeHierarchy> holder = mMultiDraweeHolder.get(i);
holder.setController(controller);
holder.getTopLevelDrawable().setBounds(...)
//在Fresco文档中构建抽屉控制器
付款人持有人=mm多付款人持有人.get(i);
持有者。设置控制器(控制器);
holder.gettoplaveldrawable().setBounds(…)
要将它们分配给TextView,请执行以下操作:

List<Drawable> drawables = new ArrayList<>();
for (int i = 0; i < 4; i++) {
  drawables.add(mMultiDraweeHolder.get(i).getTopLevelDrawable());
}
setCompoundDrawables(
    drawables.get(0), drawables.get(1), drawables.get(2), drawables.get(3));
List drawables=new ArrayList();
对于(int i=0;i<4;i++){
add(mmultipraureholder.get(i).gettoplaveldrawable());
}
可拆卸可拆卸组件(
drawables.get(0),drawables.get(1),drawables.get(2),drawables.get(3));

您的TextView仍然需要覆盖onDetachedFromWindow和文档中解释的其他方法,但您应该能够按原样粘贴代码。

为什么不使用TextView左侧的ImageView来执行此操作?@user2520215我不希望在层次结构中有额外的视图您搜索过了吗?setCompountIntrisct等等等等,sorr关于这一点,我已经忘记了方法。我只是现在你可以尝试扩展TextView,在左侧添加背景,并给它一个默认的paddingLeft大小:drawble的宽度。