我看到了一些关于这个的帖子,我明白了这个问题。但是怎么绕过去呢?我有 ListView
和可以展开的项目,但是一旦 View 消失,它就不会再可见,除非它有可用空间。如何创造这个空间?
private void mySetOnItemListener() {
l.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
Log.d("onItemClick","called");
LinearLayout ll = (LinearLayout)view.findViewById(R.id.llOpenedField);
ll.setVisibility(View.VISIBLE);
}
});
}
我的 View 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:weightSum="5" >
<TextView
android:id="@+id/tv_name"
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="4"
android:padding="7dp"
android:text="item"
android:textColor="@android:color/background_dark"
android:textSize="25dp" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llOpenedField"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
>
<ImageButton
android:id="@+id/ibInformation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/info" />
</LinearLayout>
</LinearLayout>
LinearLayout
android:id="@+id/llOpenedField"
是我在开始时试图让消失
的东西。
我将 gone
属性放在 BaseAdapter
内的 getView()
中。
最佳答案
如果您将使元素可见的代码放入其 onClickListener 中,它将无法访问(如果它不占用任何屏幕空间,您将无法点击它)。你应该在它下面放置一个最小高度的布局,当你的 View l 消失时,新的布局外壳变得可见,并且它应该获得可见的 onClickListener。这样,在您的 View 消失后,这个新布局将能够将它带回来。
关于android - setvisibility(view.visible) 在 setvisibility(view.gone) 之后不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190892/