2012-04-09 6 views
1

레이아웃 파일 - main.xml (선형 레이아웃)에는 b1과 b2와 같은 2 개의 버튼, 1 개의 listview 및 1 개의 관련 레이아웃이 있습니다. b1을 클릭하면 목록보기가 VISIBLE이고 상대 레이아웃은 GONE이됩니다. b2를 클릭하면 listview는 GONE이되고 상대 레이아웃은 VISIBLE이됩니다. 여기
android의 레이아웃 간 전환

b1.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) 
      { 
       try{ListView listView = (ListView) Home.this.findViewById(R.id.mylist); 
       listView.setTextFilterEnabled(true); 

       String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
        "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
        "Linux", "OS/2" ,"asdsad","asdsdsa","asdasdsa"}; 
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, 
         R.layout.list_item,values); 

        // Assign adapter to ListView 
       RelativeLayout rl=(RelativeLayout) findViewById(R.id.rl1); 
       rl.setVisibility(8); 
        listView.setAdapter(adapter); 
        listView.setVisibility(0);} 
       catch(Exception e){Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();} 
      } 

     });<br> 
b2.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) 
      { 
      try 
      { 

      ListView ls=(ListView) findViewById(R.id.mylist); 
      ls.setVisibility(8); 
      RelativeLayout rl=(RelativeLayout) findViewById(R.id.rl1); 
      getLayoutInflater().inflate(R.layout.creategroup,rl,true); 
      rl.setVisibility(0); 


      EditText username=(EditText) findViewById(R.id.group_owner_fill); 
      username.setText(userid); 
      username.setEnabled(false); 
      username.setFocusable(false); 
      boolean t=username.isEnabled(); 
      String s=new Boolean(t).toString(); 
      Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show(); 



      } 
      catch(Exception e) 
      { 
       Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show(); 
      } 
      } 

     }); 



내가 B2를 클릭 처음
는 EDITTEXT (사용자 이름)이 잠겨 코드입니다 (즉는, setEnabled 및 setfocussable이 거짓 만들어집니다). 하지만 b1을 클릭 한 다음 b2를 클릭하면 EditText가 잠기지 않고 setText도 없습니다. 이것에 대한 가능한 이유는 무엇일까요?

답변

3

가시성을 설정하는 대신 ViewFlipper을 구현하는 것이 좋습니다. 왜냐하면 ViewFlipper는 사용자가 원할 때마다 뷰를 넘길 수 있기 때문입니다.

<ViewFlipper 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/flip"> 

    <ListView /> 
     <RelativeLayout> 
     ............. 
     ............. 
     .............   
     </RelativeLayout> 

</ViewFlipper> 

코드에서 setDisplayedChild() 메서드를 사용하여 뷰를 뒤집을 수 있습니다. FYI, RelativeLayout은 자식 1입니다. 따라서 flipper.setDisplayedChild(1)

+0

작성하십시오. – user370305

+0

@ user370305 예, 실제로 저는 Eclipse 코드 편집기 내부에서 레이아웃 코드 예제를 만들었습니다. :) –

+0

@PareshMayani : Suraj는 그가 얻는 결과에 대한 가능한 이유를 묻습니다. – Ashwin