setvisibility(view.visible) not working after setvisibility(view.gone)

20,537

Solution 1

If you put the code making an element visible into its onClickListener, it won't be reachable (if it consumes none of the screen-space, you won't be able to click on it). You should put a layout with a minimal height below it, and when your view l becomes gone, the new layout shell become visible, and it should get the visible-making onClickListener. This way, after your View becomes gone, this new layout will be able to bring it back.

Solution 2

please check this answer. This answer work for me.

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);
Share:
20,537
Jesus Dimrix
Author by

Jesus Dimrix

i am sexy and i know it ! and android developer .

Updated on March 30, 2020

Comments

  • Jesus Dimrix
    Jesus Dimrix about 4 years

    I saw some post about this and I understood the problem. But how can go around it? I have ListView with item that can be expanded but once the view is gone it cannot be visible again, unless it has a free space. How to make that space?

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

    my viewLayout

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

    the LinearLayout android:id="@+id/llOpenedField" is what im trying to make gone at start .

    i put the gone attribute in the getView() inside BaseAdapter .