2013年3月6日水曜日

レイアウトを非表示に(setVisibility(View.GONE), findViewById)

レイアウトの隠し方。。


消したいけど、消せないこと。。。
消したくないけど、消えてしまったこと。。

日常生活ではとても複雑で自分で管理することはとても難しいのですが、
LinearLayoutのパーツを消すことはとても簡単です。

setVisibility(View.GONE)  
詰めて消す

setVisibility(View.INVISIBLE)
消す

setVisibility(View.VISIBLE)
表示

上記の3つで、表示・非表示の管理ができます。

サンプルソース

■xmlファイル(main.xml)

  
    
    
    
  
  


■メインアクティビティ
package com.example.linear;


import android.os.Bundle;
import android.view.View;
import android.app.Activity;
import com.example.linear.R;

public class MainActivity extends Activity {

  @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main); 
 }
 
 //GoneBtnを押したときの処理
 public void onClick_GoneBtn(View v){
  //GONEする
  findViewById(R.id.GoneBtn).setVisibility(View.GONE);
 }
 
 //InvisiBtnを押したときの処理
 public void onClick_InvisiBtn(View v){
  //INVISIBLEする
  findViewById(R.id.InvisiBtn).setVisibility(View.INVISIBLE);
 }
 
 //recoverBtnを押したときの処理
 public void onClick_recoverBtn(View v){
  //2つのボタンを復活!!
  findViewById(R.id.InvisiBtn).setVisibility(View.VISIBLE);
  findViewById(R.id.GoneBtn).setVisibility(View.VISIBLE);
 }
 
 //allBtnを押したときの処理
 public void onClick_allBtn(View v){
  //Linearを消すか復活させるかの判定
  if (findViewById(R.id.buttonlayout).getVisibility() != View.VISIBLE){
   findViewById(R.id.buttonlayout).setVisibility(View.VISIBLE);
  }else{
   findViewById(R.id.buttonlayout).setVisibility(View.INVISIBLE);
  }
 }
}
■実行結果

1)初期表示

2)GONEを押すと


3)INVISIBLEを押すと




GONEにすると消えた分が詰めて表示され、

INVISIBLEにすると詰まらず消えます。


また、各パーツを囲っているLInearを消すと、

中のパーツもまとめて消えます。


どのような動きになるか、色々ボタンを

押して、試してください。


findViewByIdはxmlファイルでの各パーツのIdを指定します。


また、メインソースにあるonClick_~はxmlファイルでの各パーツのonClickから値を

取得しています。

ボタン押下時の処理の取得方法はたくさんありますが、あまり使わない実装方法です。。。。。。

0 件のコメント:

コメントを投稿