我试图检查RelativeLayout.LayoutParams中的规则,但getRule()仅在API 23中引入,有没有办法在早期版本中执行此操作?
答案 0 :(得分:6)
有一种更简单的方法可以做到这一点。您无需按照AkashBhave的回答中所述的规则进行循环。
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) rl.getLayoutParams();
可以像这样轻松访问任何规则:
params.getRules()[RelativeLayout.ALIGN_TOP]
对于您的用例(如上文评论中所述),您可以这样做:
if(params.getRules()[RelativeLayout.ALIGN_TOP] == R.id.mView){
}
此外,如果您只是想检查特定规则是否存在:
if(params.getRules()[RelativeLayout.ABOVE] == 0){
//it does not
} else {
//it does
}
答案 1 :(得分:-1)
另一种类似于getRule()
的方法称为getRules()
,它是在API级别1中引入的。该方法的文档位于:https://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#getRules()。您可以类似地使用此方法。您没有传递任何内容,而是获取一系列受支持的规则,而不是传递int
。然后,您可以遍历该规则数组,并将它们与您要查找的规则进行比较。这是一个例子:
int[] rules = relativeLayout.LayoutParams.getRules();
for(int rule : rules) {
if(rule == rule1 || rule == rule2 || rule == rule3) {
// Rule exists in RelativeLayout
} else {
// Rule doesn't exist
}
}
希望它有所帮助!