此人已下架 2016-11-14 13:36 采纳率: 33.3%
浏览 4220
已结题

android requestLayout() improperly called by错误

在写一个小东西,程序也能跑起来,就是会不断地打印出requestLayout() improperly called by
。查了资料,出现这个报错好像有蛮多原因,没找到具体的解决方法,求助,先谢过。

错误貌似出现在这儿:

public class ImageText extends LinearLayout{
private Context mContext = null;
private ImageView mImageView = null;
private TextView mTextView = null;
private final static int DEFAULT_IMAGE_WIDTH = 64;
private final static int DEFAULT_IMAGE_HEIGHT = 64;
private int CHECKED_COLOR = Color.rgb(29, 118, 199); //

private int UNCHECKED_COLOR = Color.GRAY;   //


public ImageText(Context context) {
    super(context);
    mContext = context;
    Log.v("***imageText","***");
}

public ImageText(Context context, AttributeSet attrs) {
    super(context, attrs);
    mContext = context;
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View parentView = inflater.inflate(R.layout.image_text_layout, this, true);
    mImageView = (ImageView)findViewById(R.id.iv_icon);
    mTextView = (TextView)findViewById(R.id.tv_text);
    Log.v("***imageText","***");
}

public void setImage(int id){
    if(mImageView != null){
        mImageView.setImageResource(id);
        setImageSize(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT);
        Log.v("***setImage","***");
    }
}

public void setText(String s){
    Log.v("***setText","***");
    if(mTextView != null){
        mTextView.setText(s);
        mTextView.setTextColor(UNCHECKED_COLOR);
    }
}

private void setImageSize(int w, int h){
    if(mImageView != null){
        ViewGroup.LayoutParams params = mImageView.getLayoutParams();
        params.width = w;
        params.height = h;
        mImageView.setLayoutParams(params);
    }
}

public void setChecked(int itemID){
    Log.v("***setChecked**","***");
    if(mTextView != null){
        mTextView.setTextColor(CHECKED_COLOR);
    }
    int checkDrawableId = -1;
    switch (itemID){
    case Constant.BTN_FLAG_NEARBY:
        checkDrawableId = R.drawable.nearby_selected;
        break;
    case Constant.BTN_FLAG_MESSAGE:
        checkDrawableId = R.drawable.message_selected;
        break;
    case Constant.BTN_FLAG_DEAL:
        checkDrawableId = R.drawable.deal_selected;
        break;
    case Constant.BTN_FLAG_MY:
        checkDrawableId = R.drawable.my_selected;
        break;
    default:break;
    }
    if(mImageView != null){
        mImageView.setImageResource(checkDrawableId);
    }
}

// @Override

 // public boolean onInterceptTouchEvent(MotionEvent ev) {
//      return true;
//  }


}

错误信息,无限地输出日志
11-14 13:31:33.710 9046-9046/org.vecrates W/View: requestLayout() improperly called by org.vecrates.ui.ImageText{787c549 V.E...C.. ......I. 438,40-536,170 #7f0b0059 app:id/btn_message} during second layout pass: posting in next frame
11-14 13:31:33.710 9046-9046/org.vecrates W/View: requestLayout() improperly called by org.vecrates.ui.ImageText{2616e4e V.E...C.. ......I. 806,40-904,170 #7f0b005a app:id/btn_deal} during second layout pass: posting in next frame
11-14 13:31:33.726 9046-9046/org.vecrates W/View: requestLayout() improperly called by org.vecrates.ui.ImageText{787c549 V.E...C.. ......I. 438,40-536,170 #7f0b0059 app:id/btn_message} during layout: running second layout pass
11-14 13:31:33.726 9046-9046/org.vecrates W/View: requestLayout() improperly called by org.vecrates.ui.ImageText{2616e4e V.E...C.. ......I. 806,40-904,170 #7f0b005a app:id/btn_deal} during layout: running second layout pass
11-14 13:31:33.726 9046-9046/org.vecrates W/View: requestLayout() improperly called by org.vecrates.ui.ImageText{787c549 V.E...C.. ......I. 438,40-536,170 #7f0b0059 app:id/btn_message} during second layout

  • 写回答

3条回答 默认 最新

  • devmiao 2016-11-14 14:18
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料