AndroidビューにはCSSクラスセレクタと同等の機能がありますか? R.idのようなものですが、複数のビューで使用できますか?私は、レイアウトツリー内の位置に関係なく、いくつかのグループのビューを隠したいと思っています。AndroidビューのCSSクラスセレクタに相当しますか?
12
A
答えて
4
私はあなたが望むアンドロイド:idを探して、あなたのレイアウトのすべてのビューを反復する必要があると思います。 View setVisibility()を使用して可視性を変更することができます。また、android:idの代わりにView setTag()/ getTag()を使用して、処理したいビューをマークすることもできます。例えば、次のコードのレイアウトを横断する汎用的な方法を使用しています。
// 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
あなたはこのようなすべてのビューのために同じタグを設定することができ、その後、あなたはこのような単純な機能とそのタグを持つすべてのビューを取得することができます:
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;
}
Shlomi Schwartz answerで説明したとおりです。明らかに、これはcssクラスほど有用ではありません。しかしこれは、あなたのビューを何度も反復するためのコードを書くことと比べて、少し役に立ちます。
関連する問題
- 1. NSURLSessionはAndroidに相当しますか?
- 2. CSSクラスセレクタの子
- 3. androidのtimeIntervalSinceReferenceDateに相当します。
- 4. CSS擬似クラスセレクタ
- 5. Android用のHSTSまたはATSに相当しますか?
- 6. RecyclerビューnotifyDataSetInvalidated()相当の
- 7. CSS「:フォーカス」擬似クラスセレクタ
- 8. CSS HTMLセレクタとクラスセレクタ
- 9. Androidに相当するImageRecorderIOS.openCameraDialog
- 10. AndroidのSKStoreReviewControllerに相当するクラスが存在しますか?
- 11. AndroidのスピナーのSwift/iOSに相当しますか?
- 12. jQuery/Javascript相当のCSSカウンタ?
- 13. Android開発用のiOSストーリーボードに相当しますか?
- 14. Android Javaのset =およびgetActionCommandに相当しますか?
- 15. Androidの「トップシート」は「ボトムシート」に相当しますか?
- 16. cssに相当するクラスが含まれていますか?
- 17. 角度2のビューに相当します
- 18. runserverビューに相当するApache
- 19. CSSLibはCSSのlineheightに相当します
- 20. CSSクラスセレクタがCSS idセレクタをオーバーライドする
- 21. AndroidはCocoaPods Pods-Acknowledgements.plistに相当しますか?
- 22. CSSセレクタに相当するXPath
- 23. CSSに相当する<big>
- 24. ファイルベースのjava.util.concurrent.locks.Lockに相当しますか?
- 25. RubyのcURLに相当しますか?
- 26. virtualenvのLuaに相当しますか?
- 27. JMockItのtimes()に相当しますか?
- 28. QTMovieViewのオーディオに相当しますか?
- 29. WP7のデータリストに相当しますか?
- 30. QtのGtkSpinnerに相当しますか?