setvisibility(view.gone)后setvisibility(view.visible)无效

11

我看到一些关于这个问题的帖子,我理解了这个问题。但是如何解决它呢?我有一个 ListView,其中的项目可以展开,但一旦视图消失,它就再也无法可见,除非有一个空闲的空间。如何创建那个空间呢?

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);
    }
    });
}

我的视图布局

<?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>

我试图让android:id="@+id/llOpenedField"LinearLayout在一开始就被隐藏。

我在BaseAdaptergetView()方法中加入了gone属性。

3个回答

4
如果您将使元素可见的代码放入其 onClickListener 中,它将无法访问(如果它没有使用屏幕空间,您将无法单击它)。您应该在其下方放置一个具有最小高度的布局,在您的视图 l 变得不可见时,新布局将变为可见,并且它应该获取使其可见的 onClickListener。这样,在您的 View 变得不可见后,这个新的布局就能将它带回来。

1
请检查这个答案。这个答案对我有用。
TranslateAnimation translateAnimation = new TranslateAnimation(0, 50, 0, 0);
          int animationTime = 200;
          translateAnimation.setDuration(animationTime);
          translateAnimation.setFillEnabled(true);
          translateAnimation.setFillAfter(true);
          yourView.startAnimation(translateAnimation);
          yourView.setVisibility(View.VISIBLE);

-1

尝试这个并根据您的需要进行修改,这不是我正在点击的列表项。

首先将线性布局设置为android:visibility="gone",然后执行此操作。

@Override
    public void onClick(View v)
    {
        LinearLayout ll = (LinearLayout)findViewById(R.id.vis);

        if(v == ex)
        {
            if(ll.getVisibility() == View.VISIBLE)
                ll.setVisibility(View.GONE);
            else
                ll.setVisibility(View.VISIBLE);
        }

更新:这些是为您准备的代码行,可以实现适当的展开和折叠,并且不会有任何空白。

if(ll.getVisibility() == View.VISIBLE)
                    ll.setVisibility(View.GONE);
                else
                    ll.setVisibility(View.VISIBLE);

此代码将在单击列表项后,在隐藏和展开其他布局或视图上正常工作。 - Monty
在 if(v == ex) 中,“ex”代表什么? - Jesus Dimrix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接