【问题标题】:RelativeLayout addRule not working相对布局 addRule 不起作用
【发布时间】:2016-02-18 06:46:37
【问题描述】:

伙计们,我有一个卡片视图,我想用规则在上面添加 2 个按钮,但 addRule() 方法不起作用。在图片中,正在出现图 A,但我想制作图 B,我的意思是,我希望按钮设置 align_parent_right 和 align_parent_bottom 以及与第一个按钮相邻的第二个按钮。当我运行它时,会出现图 A。有什么建议吗?

RelativeLayout.LayoutParams rl= (RelativeLayout.LayoutParams) iView.getLayoutParams();        
RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(width/4,height/5);
RelativeLayout.LayoutParams lparams2 = new RelativeLayout.LayoutParams(width/4,height/5);

removeButton=new Button(mContext);
modifyButton=new Button(mContext);

lparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

cardView.setLayoutParams(rl);

cardView.addView(removeButton,lparams);
cardView.addView(modifyButton,lparams2);

【问题讨论】:

  • 您是否将这些按钮添加到实际的RelativeLayout 中?如果您只是将它们添加到支持库中的 CardView 小部件,则该小部件将不起作用,因为 CardView 不是 RelativeLayout。
  • LayoutParams 指的是直接父级,您在 CardView 中添加按钮。如果可能,请使用 xml,您可以在具有水平方向的 LinearLayout 中包含按钮

标签: android android-relativelayout


【解决方案1】:

试试这个:-

 RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.mainLayout);

        CardView cardView = new CardView(this);
        ViewGroup.LayoutParams cardParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        cardView.setLayoutParams(cardParams);
        mainLayout.addView(cardView);

        RelativeLayout relativeLayout = new RelativeLayout(this);
        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        relativeLayout.setLayoutParams(layoutParams);
        cardView.addView(relativeLayout);

        LinearLayout linearLayout = new LinearLayout(this);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        linearLayout.setLayoutParams(params);
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);
        linearLayout.setGravity(Gravity.RIGHT);
        relativeLayout.addView(linearLayout);

        Button removeButton = new Button(this);
        Button modifyButton = new Button(this);

        removeButton.setText("Remove");
        modifyButton.setText("Modify");

        linearLayout.addView(removeButton);
        linearLayout.addView(modifyButton);

【讨论】:

  • 我正在以编程方式制作卡片
  • 更新了我的代码。以编程方式制作卡片视图。试试这个。
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 2018-05-12
  • 2014-11-08
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
相关资源
最近更新 更多