Chế độ xem Android có thứ gì đó tương đương với bộ chọn lớp CSS không? Một cái gì đó như R.id nhưng có thể sử dụng cho nhiều quan điểm? Tôi muốn ẩn một số nhóm lượt xem độc lập với vị trí của họ trong cây bố cục.Tương đương với bộ chọn lớp CSS cho chế độ xem Android?
Trả lời
Tôi nghĩ rằng bạn sẽ cần phải lặp qua tất cả các chế độ xem trong bố cục của bạn, tìm kiếm android: id mà bạn muốn. Sau đó, bạn có thể sử dụng View setVisibility() để thay đổi chế độ hiển thị. Bạn cũng có thể sử dụng View setTag()/getTag() thay cho android: id để đánh dấu các khung nhìn mà bạn muốn xử lý. Ví dụ, đoạn mã sau sử dụng một phương pháp mục đích chung để đi qua cách bố trí:
// 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);
}
}
}
Bạn có thể đặt cùng một thẻ cho tất cả các quan điểm như vậy và sau đó bạn có thể nhận được tất cả các quan điểm có tag rằng với một chức năng đơn giản như thế này:
private static ArrayList<View> getViewsByTag(ViewGroup root, String tag){
ArrayList<View> views = new ArrayList<View>();
final int childCount = root.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = root.getChildAt(i);
if (child instanceof ViewGroup) {
views.addAll(getViewsByTag((ViewGroup) child, tag));
}
final Object tagObj = child.getTag();
if (tagObj != null && tagObj.equals(tag)) {
views.add(child);
}
}
return views;
}
Như được giải thích trong Shlomi Schwartz answer. Rõ ràng điều này không hữu ích như các lớp css. Nhưng điều này có thể hữu ích một chút so với viết mã để lặp lại quan điểm của bạn một lần nữa và một lần nữa.
- 1. Nhận tọa độ chạm tương đối với chế độ xem (ScreenToClient tương đương?)
- 2. Chrome tương đương với Firefox Firebug CSS chọn đường dẫn
- 3. IntelliJ có tương đương với "chế độ xem phương pháp" của Eclipse không?
- 4. Android: Nhiều chế độ xem cho chế độ xem tùy chỉnh với bố cục hiện tại
- 5. iOS 'tương đương với SharedPreferences của Android
- 6. Android: Sử dụng bộ chọn để đặt màu nền cho chế độ xem hình ảnh
- 7. Tương đương với Android java.awt.Dimension
- 8. Lớp BlackBerry tương đương với AsyncTask?
- 9. Chế độ xem Sideways với XML Android
- 10. MVC: các mô hình tương tác với chế độ xem?
- 11. Có chế độ xem web tốt hơn cho Android
- 12. Cách tải chế độ xem cho một mục trong chế độ xem danh sách trong Android?
- 13. Tương đương với CSS trong XAML
- 14. Lựa chọn văn bản Android Trong chế độ xem web
- 15. Tương đương coredata cho android
- 16. Tương đương với Android tốt nhất cho Bộ điều khiển thanh tab iOS
- 17. Chế độ xem cuộn cho chế độ xem văn bản trong android
- 18. CSS tương đương với <big>
- 19. Chế độ xem trang phân trang với bộ điều khiển chế độ xem trẻ em
- 20. Chọn các cột của Chế độ xem
- 21. Cần có Android tương đương với AudioInputStream
- 22. Chế độ xem lớp ở Django
- 23. Chế độ xem dựa trên Lớp gọi điện thoại Django từ chế độ xem lớp khác
- 24. Thêm nhiều chế độ xem vào Bộ định tuyến hoặc chế độ xem (Django-Rest-Framework)
- 25. Chế độ xem băng chuyền trong Android
- 26. tương đương với thời gian cho bộ nhớ kiểm tra
- 27. Lớp học cho Bộ điều khiển Chế độ xem mới trong Storyboard
- 28. Tương đương với jQuery .hide() để đặt chế độ hiển thị: ẩn
- 29. TPL Tương đương với Java/Android
- 30. Có thể đặt một chế độ xem trên một chế độ xem khác trong Android không?