【发布时间】:2011-11-26 21:25:37
【问题描述】:
在我相当复杂的视图布局中,我遇到了一个奇怪的问题。 (在我的解释中我会尽量简化一下)
基本上我有一个ListView,其中每个项目由一个TextView 和一个ImageButton 组成。我可以单击列表项(在文本视图上)或按钮(我将 ImageButton 设置为不可聚焦,否则它将不起作用)
现在它似乎工作正常,直到我打开另一个窗口并返回到列表视图。 从那时起,我可以单击 ImageButton 而不会发生任何事情(甚至在单击期间背景不会发生变化)。但是当我再次单击 TextView 时,ImageButton 中的所有单击事件都会立即调度。
这是为什么呢?
编辑:
列表项:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0px"
android:minHeight="40dp"
android:orientation="horizontal"
android:paddingLeft="2px"
android:paddingRight="2px"
>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Text"
android:textSize="19dp"
android:paddingTop="4px"
android:paddingBottom="4px"
android:layout_gravity="center_vertical"/>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/open_subtree_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_margin="0px"
android:orientation="horizontal"
android:padding="0px">
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:background="@drawable/separator_line" />
<com.treeviewer.leveldisplay.DontPressWithParentImageButton
android:id="@+id/btn_right"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:background="@drawable/list_selector_background"
android:focusable="false"
android:focusableInTouchMode="false"
android:padding="10dp"
android:src="@drawable/arrow_right" />
</LinearLayout>
</LinearLayout>
就是这样膨胀的:
[...]
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = inflater.inflate(R.layout.tree_row, null, false);
TextView textView = (TextView)mView.findViewById(R.id.text1);
LinearLayout nextNodeButtonContainer = (LinearLayout)mView.findViewById(R.id.open_subtree_layout);
if(childCount >= 0) {
titleBuilder.append(" (" + childCount + ")");
nextNodeButtonContainer.setVisibility(View.VISIBLE);
View button = nextNodeButtonContainer.findViewById(R.id.btn_right);
button.setFocusable(false);
button.setFocusableInTouchMode(false);
//button.setClickable(true);
button.setOnClickListener(clickListener);
button.setTag(tagValue);
} else {
nextNodeButtonContainer.setVisibility(View.GONE);
}
textView.setText(titleBuilder);
如果您需要更多代码,请告诉我。
【问题讨论】:
-
在这里发布一些代码来帮助我们...
标签: android