我目前正在编写自定义 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;
}
}
我有一种对点击做出反应的方法,一切正常。我纯粹是想在这个组件中添加一个文本视图。本质上将两个组件合二为一。