android– 单击ListView项目更改项目内元素的状态?

android– 单击ListView项目更改项目内元素的状态?,第1张

概述我不知道如何解释这个问题,但我会试试.我有一个包含几个项目的ListView.每个项目都有一个TextView和两个ImageView.我想在单击它们时更改ImageView,并且当我长按ListView项目时,我想打开上下文菜单.对于ImageView,一切正常.对于整个项目,我可以在长按后显示上下文菜单,但我的问题

我不知道如何解释这个问题,但我会试试.我有一个包含几个项目的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项目更改项目内元素的状态?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存