【问题标题】:Aligning a Linear Layout within a RelativeLayout to the Center and to the Left将 RelativeLayout 中的线性布局与中心和左侧对齐
【发布时间】:2012-03-05 14:39:24
【问题描述】:

目前我已尝试将我的线性布局对齐到左侧和中心,但目前无法使其正常工作。见以下代码:

    CustomLinearLayout sideMenu = new CustomLinearLayout(this);

    RelativeLayout.LayoutParams sideMenuParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT);
    sideMenuParams.addRule(RelativeLayout.CENTER_VERTICAL);
    sideMenuParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);   

    sideMenu.setLayoutParams(sideMenuParams);   
    sideMenu.setOrientation(LinearLayout.VERTICAL);
    sideMenu.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    sideMenu.setBackgroundColor(Color.TRANSPARENT);
    //sideMenu.setGravity(Gravity.CENTER);

    sideMenu.addView(AppSoups);
    sideMenu.addView(salads);
    sideMenu.addView(ribs);
    sideMenu.addView(favorites);
    sideMenu.addView(sandwiches);
    sideMenu.addView(sides);
    sideMenu.addView(desserts);

    RelativeLayout screenLayout = new RelativeLayout(this);
    screenLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    screenLayout.setBackgroundResource(R.drawable.body_bkgd);
    screenLayout.addView(sideMenu);

    setContentView(screenLayout);

CustomLinearLayout 只是一个扩展 LinearLayout 来做一些自定义绘图的类。无论如何我在这里做错了什么?到目前为止,它向左对齐并与相对布局的顶部对齐,但我无法使其居中。正如旁注一样,我的规则中的任何一个都不能与将 LinearLayout 设置为中心一起使用(我已在代码中将其注释掉)。最后,我添加到线性布局的视图只是文本视图 - 仅供参考(代码未显示)

【问题讨论】:

    标签: android android-linearlayout android-relativelayout


    【解决方案1】:

    我认为你是“用你在第 7 行设置的新布局参数覆盖你在第 5 行设置的布局参数,所以

        sideMenuParams.addRule(RelativeLayout.CENTER_VERTICAL);
        sideMenuParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);  
    

    并没有真正发挥作用

    【讨论】:

    • 谢谢你!我想一旦你开始有相对布局的孩子并且在更多不同类型的布局中,事情可能会变得更加复杂。作为旁注,我不得不将我的 sideMenuParams 更改为 WRAP 内容,因为它水平填充了整个相对布局屏幕。
    • 总是乐于提供帮助。我建议您避免通过代码定义布局。除非你有充分的理由——使用 xml 布局文件
    • 除了保持我的 Java 技能之外,我还有许多动态创建的布局(在运行时),它们可以在应用程序的过程中根据各种事件改变形式。再次感谢您的帮助。哦,是的,事实证明我不需要这两个规则。 CENTER_VERTICAL 足以完成这项工作。
    • 这正是我能想到在代码中定义布局的唯一充分理由。 :)
    • 好吧,你可能会争辩说,保持 Java 技能也是必要的——尤其是因为那里的许多 android 工作都希望你能够用 Java 编写代码..但我明白你的意思并同意 :)跨度>
    【解决方案2】:

    在这里

    screenLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    

    尝试将 WRAP_CONTENT 更改为 FILL_PARENT

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2012-01-24
      • 1970-01-01
      相关资源
      最近更新 更多