【问题标题】:Android - Position Relative layout within main layout DynamicalyAndroid - 在主布局中动态定位相对布局
【发布时间】:2013-08-14 04:16:20
【问题描述】:

我正在尝试将相对布局动态添加到我的 mainLayout(这也是一个相对布局)中。我有它,以便您可以通过单击按钮多次添加布局。但是我想要它,以便添加的第一个布局在屏幕的左侧,第二个布局在中间,第三个布局在右侧,等等......我使用模数运算符做到了这一点,但它不起作用。

下面是我的代码

LinearLayout mLinearLayout;
RelativeLayout rlcopy;
RelativeLayout[] rArray = new RelativeLayout[20];
int counter = 1;
RelativeLayout llcustomrow;
RelativeLayout.LayoutParams relativeLayoutParams; 

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mLinearLayout = (LinearLayout) inflater.inflate(
            R.layout.customworkout, container, false);

    llcustomrow = (RelativeLayout)mLinearLayout.findViewById(R.id.llcustomrow);

    for(int i = 1;i<rArray.length-1;i++){
        rArray[i] = (RelativeLayout)View.inflate(getActivity(), R.layout.addworkoutlayout, null); 

        if(i%3 == 1 ){
            rArray[i].setGravity(Gravity.LEFT);
        }else if(i%3 == 2){
            rArray[i].setGravity(Gravity.CENTER_HORIZONTAL);
        }else{
            rArray[i].setGravity(Gravity.RIGHT);
        }

    }

    Button bAdd = (Button) mLinearLayout.findViewById(R.id.bAddExcercise);



    bAdd.setOnClickListener(new OnClickListener() {         
        @Override
        public void onClick(View v) {
             llcustomrow.addView(rArray[counter]);  
             counter++;
        }
    });


    return mLinearLayout;
}

我认为问题在于我设置重力的位置,我认为它没有做任何事情

【问题讨论】:

  • 您没有将rArray[i] 添加到父视图中。
  • 同样方法setGravity 设置视图/视图组内的内容重力,它没有指定父视图组内应采用的重力。

标签: java android xml android-relativelayout


【解决方案1】:

您为什么不想将片段用于这些目的?您可以使用三个权重为 1 的框架,例如,在主布局文件中具有水平方向的 LinearLayout 中。然后为每个框架创建三个布局。对于以前的动态工作,您可以使用 FragmentManager 和 FragmentTransaction。请阅读它们。

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多