首页 > 解决方案 > 从约束布局循环设置视图子项的重力

问题描述

TextView当我访问像a 的循环一样动态创建的子项时ConstraintLayout,它们返回为View,而没有setGravity.

有谁知道设置这些视图的重力的方法(TextView/child 的重力,而不是布局)?

for (int i = 0;i < constraintLayout.getChildCount();i++) {
    final View child = constraintLayout.getChildAt(i);
    Object tag = child.getTag(R.id.tagId);
    if(tag != null) {
        //child.setGravity(Gravity.START); // Doesn't work...
    } else {} }

我没有看到任何Gravity设置 ConstraintLayout.LayoutParams选项ConstraintSet

另外,我试过final TextView child = (TextView) constraintLayout.getChildAt(i);: 但是,这导致了一个致命的异常:java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView。注意:孩子是文本视图,而不是图像视图......

标签: javaandroidandroid-viewtextviewandroid-constraintlayout

解决方案


先将视图投射到TextView,然后调用setGravity.

final View child = constraintLayout.getChildAt(i);
Object tag = child.getTag(R.id.tagId);
if (tag != null) {
    if (child instanceof TextView) {
        TextView tv = (TextView) child;
        tv.setGravity(Gravity.START);
    }
} else {}

推荐阅读