android自定义imageview,右侧是textview

时间:2012-11-21 13:03:23

标签: android components imageview android-edittext

我目前正在编写自定义ImageView。我实际上将这个imageview转换成了一个多状态按钮。

在我的情况下,按钮有三种状态,回答是,回答为否和未回复。 我严格地不想使用radiogroup /按钮。

我有imageview的基本设置。它具有onclick功能,可根据状态正确更改图像。现在只是一个带十字的复选框,一个空的复选框和一个带勾号的复选框。

我想要的是,当状态发生变化(点击图像)时,我想要文本,它应该始终在周围,而不是在图像视图的顶部。要改变它的价值。我希望能够调用类似于customCompInstance.getText()的方法; customCompInstance.getText();

我的想法是,自定义imageview类应该有一个TextView成员,但我无论如何将它放在左边,水平对齐到imageview。

不能在xml中使用两个不同的元素。

添加textview并将其放在imageview右侧是正确的解决方案,如果没有,你有什么建议,如果是的话,请给我一些如何实现这一目标的提示。

我班级的简化版本:

public class AnswerImageView extends ImageView {
    private AnswerState mSelectionState;

    /**
     * @param context
     */
    public AnswerImageView(Context context)
    {
        super(context);
        // TODO Auto-generated constructor stub
        setImageResource(R.drawable.answer_none);
        setTag(R.drawable.answer_none);
        mSelectionState = AnswerState.ANSWER_NONE;
    }

    /**
     * @param context
     * @param attrs
     */
    public AnswerImageView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        setImageResource(R.drawable.answer_none);
        setTag(R.drawable.answer_none);
        mSelectionState = AnswerState.ANSWER_NONE;
    }

    /**
     * @param context
     * @param attrs
     * @param defStyle
     */
    public AnswerImageView(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
        setImageResource(R.drawable.answer_none);
        setTag(R.drawable.answer_none);
        mSelectionState = AnswerState.ANSWER_NONE;
    }

    public AnswerState getSelectionState() {
        return mSelectionState;
    }

    public void setSelectionState(AnswerState selectionState) {
        this.mSelectionState = selectionState;
    }
}

我有一个对onclicks做出反应的方法,一切正常。 我纯粹要求在此组件中添加textview。基本上将两个组件合并为一个。

1 个答案:

答案 0 :(得分:1)

您应该从TextView而不是ImageView延伸,并查看方法TextView.setCompoundDrawableXXXHere是文档的链接。