android 自定义属性,其中有个属性是引用图片,但实际没有引用到?求解

poineer_1 发布于 2013/11/11 16:52
阅读 1K+
收藏 0

attrs.xml

<resources>
    <declare-styleable name="btn">
        <attr format="string" name="msg"></attr>
        <attr format="reference" name="img"></attr>
    </declare-styleable>
</resources>

自定义的view:

private ImageView icon;
 private TextView itext;
 public CustomBottom(Context context){
  this(context,null);
 }

public CustomBottom(Context context, AttributeSet attrs) {
  super(context, attrs);
  setGravity(Gravity.CENTER_HORIZONTAL); 
  this.init(context);

  TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.btn);
     String msg = a.getString(R.styleable.btn_msg);
     if (null != msg ){
      this.itext.setText(msg);
     }

   this.icon.setBackgroundResource(a.getResourceId(R.styleable.btn_img, 0));
     a.recycle();
 }

this.icon.setBackgroundResource(a.getResourceId(R.styleable.btn_img, 0)); 这一步为什么不起效果,我打印a.getResourceId(R.styleable.btn_img, 0))这句是可以得到图片的ID值得,并且我直接在sdk_bottom_btn

布局中设置imagview(即icon)的背景,也不起效果,求解?

private  void init(Context context){
  LayoutInflater.from(context).inflate(R.layout.sdk_bottom_btn, this); 
  this.icon  = (ImageView)this.findViewById(R.id.bottom_btn_ico);
  this.itext = (TextView)this.findViewById(R.id.bottom_btn_text);
 }
加载中
0
poineer_1
poineer_1

<com.snd.test.view.CustomBottom
  android:id="@id/bottom_home_btn"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  bdm:img="@drawable/tabbar_icon_home_bg"
  bdm:msg="@string/guangjie"

 />

poineer_1
poineer_1
@道友慢走 但是图片没有显示出来,文本可以,郁闷
道友慢走
道友慢走
好像是这样的。
0
道友慢走
道友慢走

试着调用一下刷新界面的接口,应该会有用。

android的东西我用过就忘记了。

0
poineer_1
poineer_1

直接在自定义的view中加入:this.mIcoIv.setBackgroundResource(R.drawable.tabbar_icon_home_bg);也不起效果,到底为啥?

0
道友慢走
道友慢走

要在这些语句后面加入一个刷界面的操作。你试了吗?

0
道友慢走
道友慢走
this.mIcoIv.update()之类的。这个接口是我瞎掰的,android的东西不太熟啊。
poineer_1
poineer_1
@poineer_1 感谢啦,我换个布局解决了
poineer_1
poineer_1
试了this.icon.requestLayout();this.icon.invalidate();都么有用
poineer_1
poineer_1
试了this.icon.requestLayout();this.icon.invalidate();都么有用...
0
poineer_1
poineer_1
试了this.icon.requestLayout();this.icon.invalidate();都么有用
0
道友慢走
道友慢走

网上看到一个改变背景色的接口。试试类似下面的方式。

View bv = this.findViewById(android.R.id.title);  ((TextView) bv).setTextColor(Color.WHITE);  ((View) bv.getParent()).setBackgroundColor(Color.RED);

你确定控件和界面上的绑定了吗? 

返回顶部
顶部