Rucha
Rucha

Reputation: 17

Android Xml File Button Hidden

In My Android Application, i have to hide button based on some condition,if condition is true than button is hide,otherwise it appear as it is, so for hide facility i'm using button's buttonID.setVisibility(View.INVISIBLE),so that button is hidden but it take space in xml file,so please suggest me to button is hidden and don't take space in xml file

Upvotes: 0

Views: 6452

Answers (3)

Lokesh Saini
Lokesh Saini

Reputation: 106

  • visible - This means visible and it takes space.
  • invisible- This means invisible and it takes space.
  • gone- This means invisible and it DOESN'T takes space.

Use it as follows:

Visible tag in XML

android:visibility="visible"

Visible code in java

view.setVisibility(View.VISIBLE);

Invisible tag in XML

android:visibility="invisible"

Invisible code in java

view.setVisibility(View.INVISIBLE);

Gone tag in XML

android:visibility="gone"

Gone tag in java

view.setVisibility(View.GONE);

Upvotes: 4

John Joe
John Joe

Reputation: 12803

As what @Tim suggested,you can always change the layout parameters for the elements not just set it's visibility to VISIBLE or GONE

Here the sample. Assume checkBox is clicked

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){  
                buttonID.setVisibility(View.GONE);
             }
            else{
                buttonID.setVisibility(View.VISIBLE); 
                // now settings the new parameters
                AbsoluteLayout.LayoutParams params = ((AbsoluteLayout.LayoutParams) buttonID.getLayoutParams());
                params.x = 100; // the new value
                params.y = 100; // the new value
                buttonID.setLayoutParams(params);
            }
    });

Source : Android: how to change layout_x, layout_y in an AbsoluteLayout dynamically?

Upvotes: 0

justqb
justqb

Reputation: 771

you should use View.GONE instead of View.INVISIBLE

Upvotes: 0

Related Questions