Android ConstraintLayout以编程方式连接,但只能从上到上工作

mtb9vblg  于 2023-05-12  发布在  Android
关注(0)|答案(2)|浏览(89)
LinearLayout.LayoutParams navigationBarParams = 
    new LinearLayout.LayoutParams(0, (int)(BAR_DEFAULT_HEIGHT_DP * density) );

    _navigationBar.setId(R.id.navigation_fragment_navigation_bar);
    _navigationBar.setPadding(0, 0, 0, 0);
    _navigationBar.setLayoutParams(navigationBarParams);
    _navigationBar.setOrientation(LinearLayout.HORIZONTAL);
    _navigationBar.setBaselineAligned(false);
    _navigationBar.setWeightSum(6f);
    _navigationBar.setElevation(20.0f);

    ConstraintLayout con = (ConstraintLayout)_rootView.findViewById(_rootConstraintLayoutId);
    con.addView(_navigationBar);
    
    ConstraintSet set = new ConstraintSet();
    set.clone(con);
    set.constrainWidth(_navigationBar.getId(), 0);
    set.connect(_navigationBar.getId(), ConstraintSet.TOP, con.getId(), ConstraintSet.TOP, 100 ); //work!
    set.connect(_navigationBar.getId(), ConstraintSet.LEFT, con.getId(), ConstraintSet.LEFT,100 ); //not work!!
    set.connect(_navigationBar.getId(), ConstraintSet.RIGHT, con.getId(), ConstraintSet.RIGHT, 100 ); //not work!!
    set.applyTo(con);

我将LinearLayout添加到根ConstraintLayout。并将约束TOP连接到TOP,LEFT连接到LEFT,RIGHT连接到RIGHT,所有值均为100。但只有最高值100是功。不是工作左,右。我的代码有什么问题?

46qrfjad

46qrfjad1#

请改用“开始”和“结束”。这样,您的视图将支持不同的语言。

set.connect(boton.getId() , ConstraintSet.START , ConstraintSet.PARENT_ID , ConstraintSet.START , 80);

我知道Google上有一个bug。

1aaf6o9v

1aaf6o9v2#

android.support.constraint.ConstraintLayout
试着把它取下来
“LinearLayout”
你可以随心所欲地改变你的方向。通过书写
andriod:oreiantation=“horizontal”或andriod:oreiantation=“vertiacl”
这是你的选择

相关问题