我的imagebutton设置的图片是一张没有文字的背景图片,我想重用这张图片。因此想在imagebutton上根据此按钮功能写上不同的文字。我看网上用的方法是继承linearlayout,然后里面放一个imageview和textview,意思可能是一个设置背景,一个设置上面的文字,但是,实验下来,文字和图片由于受到线性布局约束,不能将文字放在图片上。之后我重新将之继承TextView,具体如下:
public class MyImageButton extends TextView{
public MyImageButton(Context context, AttributeSet attrs) {
super(context, attrs);
setClickable(true);
setFocusable(true);
TextView t=new TextView(context);
setBackgroundResource(R.drawable.btnbg);
}
}
这样在xml中配置如下:
<com.fly.localinfo.tool.MyImageButton
android:id="@+id/imbtn01" android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:background="@drawable/imagebuttonstyle"
android:text="MOAR" android:textColor="#ff000000" />这样就可以在指定背景图片上设置文字more之类的,但是问题又来了,这样又不能有点击效果,虽然已经设置了。实在没办法了,请问各位有是方法和建议,谢谢了???

解决方案 »

  1.   

    楼主可以用Buton啊,Button设置背景,然后可以在上面设置文字我用过,感觉效果还不错点击事件中如下处理,可以动态变换背景和文字:
    btn.setBackgroundResource(R.drawable.XXX);   设置背景
    btn.setText("");    //设置文字
      

  2.   


    如果只是设置背景和文字的话好办   我有好向个按钮 每个都要实现 press focus default三种状态  这样的话该怎么办呢  我完全晕了 这会
      

  3.   

    看下这个
    http://blog.sina.com.cn/s/blog_4e45c0b30100jkeq.html
      

  4.   

    谢谢楼上  可是“通过分析可以看到ImageButton的 layout,我们可以直接直接继承,添加一个TextView,”叫我真的不能理解  
      

  5.   

    有个笨办法就是自己写touch事件和focus事件,在里面做处理,可以达到效果: private ImageButton.OnTouchListener touch_next = new ImageButton.OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction()){
    case MotionEvent.ACTION_DOWN:
    next.setBackgroundDrawable(getResources().getDrawable(R.drawable.right_press));
    break;
    case MotionEvent.ACTION_UP:
    next.setBackgroundDrawable(getResources().getDrawable(R.drawable.right_default));
    break;
    }
    return true;
    }
        };private ImageButton.OnFocusChangeListener focus_pre = new ImageButton.OnFocusChangeListener(){
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
    if(hasFocus == true){
    pre.setBackgroundDrawable(getResources().getDrawable(R.drawable.left_focus));
    }else{    pre.setBackgroundDrawable(getResources().getDrawable(R.drawable.left_default));
    }
    }
        };这个也是在不得已的情况下写的,关注看有无更好的方法!
      

  6.   

    算了  也不问了  就用 Button算了 ImageButton  android设计它出来干什么  
      

  7.   

    我也纠结很久ImageButton android设计它出来干什么。
    直接继承TextView肯定不行,就丧失button的作用了。上面说的添加一个TextView倒不是不可行,值得一试~~~~~是添加,不是使之继承。为什么一定要继承继承linearlayout ?要的不是图片和文字同坐标重叠么
      

  8.   

    已用Button实现相应功能  结账 给分