我不知道如何解释这个问题,但我会试试.我有一个包含几个项目的ListVIEw.每个项目都有一个TextVIEw和两个ImageVIEw.我想在单击它们时更改ImageVIEw,并且当我长按ListVIEw项目时,我想打开上下文菜单.
对于ImageVIEw,一切正常.对于整个项目,我可以在长按后显示上下文菜单,但我的问题是,当我按下TextVIEw时,ImageVIEw也会改变.
索莫的代码片段:
ListVIEw项目:
<TextVIEw androID:ID="@+ID/Title" androID:textcolor="@color/black" androID:maxlines="2" androID:textSize="14dip" /> <ImageVIEw androID:ID="@+ID/minus" androID:src="@drawable/minusbutton" androID:adjustVIEwBounds="true" androID:gravity="center" /> <ImageVIEw androID:ID="@+ID/plus" androID:src="@drawable/plusbutton" androID:adjustVIEwBounds="true" androID:gravity="center" />
可绘制以更改加号按钮的状态:
<selector xmlns:androID="http://schemas.androID.com/apk/res/androID"><item androID:state_enabled="false" androID:drawable="@drawable/button_add_normal_Disabled" /><item androID:state_enabled="true" androID:state_pressed="true" androID:drawable="@drawable/button_add_pressed" /><item androID:state_enabled="true" androID:state_focused="true" androID:state_pressed="false" androID:drawable="@drawable/button_add_active" /><item androID:state_enabled="true" androID:state_focused="false" androID:state_pressed="false" androID:drawable="@drawable/button_add_normal" />
我希望你理解我的问题.我认为一个观点的所有孩子都受到父母的一个事件的影响,但我不确定.
你有解决方案吗?提前致谢
解决方法:
解决此问题的最简单方法是继承vIEwgroup并覆盖dispatchSetpressed.
这是一个例子
public class DuplicateParentStateAwarelinearLayout extends linearLayout { public DuplicateParentStateAwarelinearLayout(Context context) { super(context); } public DuplicateParentStateAwarelinearLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public DuplicateParentStateAwarelinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } /* * By default VIEwGroup call setpressed on each child vIEw, this take into account duplicateparentstate parameter */ @OverrIDe protected voID dispatchSetpressed(boolean pressed) { for (int i = 0; i < getChildCount(); i++) { VIEw child = getChildAt(i); if (child.isDuplicateParentStateEnabled()){ getChildAt(i).setpressed(pressed); } } }}
使用此方法的catch是,您必须为您想要的每个项目和不应具有此行为的子项设置duplicateparentstate为true.
总结以上是内存溢出为你收集整理的android – 单击ListView项目更改项目内元素的状态?全部内容,希望文章能够帮你解决android – 单击ListView项目更改项目内元素的状态?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)