2013-07-19 19 views

cevap

4

Sizin düzeninizdeki tüm görünümler boyunca yinelemeye ihtiyaç duyacağınızı düşünüyorum, istediğiniz android: id. Görünürlüğü değiştirmek için View setVisibility() öğesini kullanabilirsiniz. Kullanmak istediğiniz görünümleri işaretlemek için android: kimliği yerine setTag()/getTag() işlevini de kullanabilirsiniz. Örneğin, aşağıdaki kod düzenini çapraz bir genel amaçlı bir yöntem kullanır: Bu tür tüm görünümler için aynı etiketi ayarlayabilirsiniz

// Get the top view in the layout. 
final View root = getWindow().getDecorView().findViewById(android.R.id.content); 

// Create a "view handler" that will hide a given view. 
final ViewHandler setViewGone = new ViewHandler() { 
    public void process(View v) { 
     // Log.d("ViewHandler.process", v.getClass().toString()); 
     v.setVisibility(View.GONE); 
    } 
}; 

// Hide any view in the layout whose Id equals R.id.textView1. 
findViewsById(root, R.id.textView1, setViewGone); 


/** 
* Simple "view handler" interface that we can pass into a Java method. 
*/ 
public interface ViewHandler { 
    public void process(View v); 
} 

/** 
* Recursively descends the layout hierarchy starting at the specified view. The viewHandler's 
* process() method is invoked on any view that matches the specified Id. 
*/ 
public static void findViewsById(View v, int id, ViewHandler viewHandler) { 
    if (v.getId() == id) { 
     viewHandler.process(v); 
    } 
    if (v instanceof ViewGroup) { 
     final ViewGroup vg = (ViewGroup) v; 
     for (int i = 0; i < vg.getChildCount(); i++) { 
      findViewsById(vg.getChildAt(i), id, viewHandler); 
     } 
    } 
} 
3

ve sonra bu gibi basit bir fonksiyonu ile bu etiketi olan tüm görünümleri elde edebilirsiniz:

Burada açıklandığı gibi Shlomi Schwartz answer. Açıkçası bu css sınıfları kadar kullanışlı değildir. Ancak bu, görüşlerinizi tekrar tekrar tekrar yazmak için kod yazarken biraz yararlı olabilir.

İlgili konular