android - setvisibility(view.visible) 在 setvisibility(view.gone) 之后不工作

标签 android listview view visibility onitemclicklistener

我看到了一些关于这个的帖子,我明白了这个问题。但是怎么绕过去呢?我有 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/

相关文章:

java - 在android中创建用户时检查用户名可用性

android - 在 WebView 中单击链接启动媒体播放器

Android ListView 图像滞后

android - ListView 图像的 onClick 监听器 - Android

layout - 在Rails中为每个 Controller 正确渲染多个布局

android - ContentValues 和 HashMap 的区别?

java - 我的服务立即在我的警报管理器中启动

c++ - 如何修复ListView中的错误?封装控件时无法选择任何项目

android - 如果我在其他线程上阅读 View 是否正确,Android UI

ruby-on-rails - 根据环境使用 Rails 进行条件渲染