2010-05-20 32 views
7

Tôi đang sử dụng hộp kiểm trong mã của mình khi kiểm tra nó làm cho chế độ xem văn bản và chế độ editText, nhưng nếu tôi bỏ chọn hộp kiểm, chúng sẽ hiển thị thay vì bất thường.Sự cố hiển thị Android với hộp kiểm

Đây là mã:

final CheckBox save = (CheckBox) findViewById(R.id.checkbox); 
     save.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 



       // Perform action on clicks, depending on whether it's now checked 
       if (((CheckBox) v).isChecked()) { 

        nameText.setVisibility(1); 
        editName.setVisibility(1); 

       } else { 

        nameText.setVisibility(0); 
        editName.setVisibility(0); 

       } 
      } 
     }); 

Và một phần của xml mà là bên trong một diện tương đối:

<LinearLayout android:id="@+id/linearLayout3" 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below = "@+id/linearLayout2"> 

    <TextView android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/name" 
     android:visibility="invisible"/> 
    <EditText android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/>  


    <CheckBox android:id="@+id/checkbox" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/save" /> 
</LinearLayout> 

gì tôi nên làm gì để làm cho TextView và EditText biến mất khi tôi bỏ chọn hộp kiểm?

Cảm ơn bạn!

+0

Tôi đồng ý với Roflcoptr nhưng gần đây tôi đã được thử nghiệm với một vài liên quan vấn đề và thấy rằng nếu bạn đã làm (vì một số lý do điên rồ) muốn sử dụng các giá trị số nguyên không phải là 0 và 1 mà là: 0 - hiển thị 4 - vô hình 8 - biến mất Không chắc chắn tại sao đây là bội số của 4. –

Trả lời

14

Sử dụng View.VISIBLE, View.INVISIBLE, View.GONE để kiểm soát mức hiển thị (thay vì 0 & 1).

+0

Cảm ơn bạn ! Nó làm các trick! – fxi

6

Hai điều:

  1. Bạn nên sử dụng setOnCheckedChangeListener(), mà sẽ làm cho cuộc sống của bạn dễ dàng hơn.

  2. Bạn nên sử dụng View.GONE và View.VISIBLE thay vì số nguyên cho setVisibility().

+0

cảm ơn bạn đã trả lời! – fxi

2

vấn đề là trong phần này:

// Perform action on clicks, depending on whether it's now checked 
       if (((CheckBox) v).isChecked()) { 

        nameText.setVisibility(1); 
        editName.setVisibility(1); 

       } else { 

        nameText.setVisibility(0); 
        editName.setVisibility(0); 

       } 

yout không nên sử dụng các giá trị số nguyên, nhưng thay vì sử dụng các hằng số được cung cấp bởi lớp view

// Thực hiện hành động trên nhấp chuột, tùy thuộc vào việc nó bây giờ đã được kiểm tra nếu (((Hộp kiểm) v) .isChecked()) {

   nameText.setVisibility(View.VISIBLE); 
       editName.setVisibility(View.VISIBLE); 

      } else { 

       nameText.setVisibility(VIEW.INVISIBLE); 
       editName.setVisibility(VIEW.INVISIBLE); 

      } 

thay vì vô hình, bạn cũng có thể sử dụng GONE. sau đó TextEdit vô hình của bạn không cần không gian trong cách bố trí

nếu bạn đánh dấu vào API bạn sẽ thấy rằng 1 không phải là một tham số hợp lệ:

+0

thak bạn cho câu trả lời của bạn! – fxi

Các vấn đề liên quan