动态更改ConstraintLayout中视图的约束

时间:2017-06-08 18:07:54

标签: android android-view android-constraintlayout

我试图通过按下按钮更改ConstraintLayout内部视图的左约束(指南)。我的布局XML(相关部分)如下所示:

<ProgressBar
  android:id="@+id/progress_bar"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginBottom="8dp"
  android:layout_marginLeft="0dp"
  android:layout_marginRight="8dp"
  android:layout_marginTop="8dp"
  android:indeterminate="true"
  android:visibility="gone"
  app:layout_constraintBottom_toTopOf="@+id/guideline_bcrumbs_bottom"
  app:layout_constraintHorizontal_bias="0.0"
  app:layout_constraintLeft_toLeftOf="@+id/guideline_group_left"
  app:layout_constraintRight_toRightOf="parent"
  app:layout_constraintTop_toTopOf="parent"/>

<android.support.constraint.Guideline
  android:id="@+id/guideline_group_left"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  app:layout_constraintGuide_percent="0.2"
  tools:layout_editor_absoluteY="0dp"
  tools:layout_editor_absoluteX="205dp"/>

<android.support.constraint.Guideline
  android:id="@+id/guideline_category_left"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  app:layout_constraintGuide_percent="0.45"
  tools:layout_editor_absoluteY="0dp"
  tools:layout_editor_absoluteX="461dp"/>

在这里,我想动态地将进度条的constraintLeft_toLeftOf属性从guideline_group_left更改为guideline_category_left。有没有办法实现这个目标?

修改

我添加了以下行来调整约束(基于此链接:http://www.techotopia.com/index.php/Managing_Constraints_using_ConstraintSet

ConstraintSet set = new ConstraintSet();
set.connect(mProgressBar.getId(), ConstraintSet.LEFT, R.id.guideline_category_left, ConstraintSet.LEFT, 0);
set.connect(mProgressBar.getId(), ConstraintSet.RIGHT, ConstraintSet.PARENT_ID, ConstraintSet.RIGHT, 0);
set.applyTo(mConstraintLayout);

但是,在这些更改之后,进度条根本不会显示。我觉得我很亲密,但可能会遗漏一些东西。

编辑2

我意识到我忘记添加以下行,这就是为什么它不起作用。

set.clone(mConstraintLayout);

1 个答案:

答案 0 :(得分:2)

解:

我设法通过以下代码行解决了我的问题,如果他们遇到类似的问题,它可能会帮助其他人。

df = pd.read_csv("string.csv")
for index,row in df.iterrows(): 
    if "RT @" in row["Tweet"]: 
        df['Influencers'] = "@"+df['Tweet'].str.extract("\@(.+?)\:", expand= False)
    else :
        df['Influencers'] = "Original"
df.to_csv('string3.csv', index=False)