0

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

就我而言,该按钮具有三种状态,回答是,回答否和未回答。我绝对不想使用单选组/按钮。

我有 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;
    }
}

我有一种对点击做出反应的方法,一切正常。我纯粹是想在这个组件中添加一个文本视图。本质上将两个组件合二为一。

4

1 回答 1

1

TextView您应该从而不是扩展ImageView并查看方法TextView.setCompoundDrawableXXX是文档的链接。

于 2012-11-21T13:27:26.433 回答