对齐Gravity.CENTER相对布局中剩余的充气视图

时间:2014-10-06 15:08:21

标签: java android android-layout

我有一个相对布局,它充当一个动态更改文本内容的按钮。此文本使用android:gravity="center"属性在布局中居中。问题是我需要在同一个相对布局中膨胀另一个布局,但是将它对齐到左边。我可以很好地充气视图,但它总是显示在中心(正如预期的那样,因为布局具有中心重力)。它看起来像这样......

enter image description here

灰色框是父相对布局,绿色框是我尝试向左对齐的视图。我已经尝试将边距设置为各种各样的东西 - 包括父视图宽度的一半的偏移 - 但到目前为止没有任何工作。有没有办法做到这一点?可能值得补充的是,父相对布局(灰色框)的宽度会有所不同,因此无论大小如何,解决方案最好都能正常工作。

绿色视图的XML被夸大:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="20dp"
          android:layout_height="fill_parent"
          android:background="@color/pending_color"
          android:paddingLeft="5dp"
          android:id="@+id/ribbon">

我将视图扩展到父RelativeLayout的代码:

        View inflatedView = mLayoutInflater.inflate(R.layout.pending_ribbon, null);
    RelativeLayout.LayoutParams params = new LayoutParams(30, RelativeLayout.LayoutParams.MATCH_PARENT);
    inflatedView.setLayoutParams(params);

    this.addView(inflatedView);

2 个答案:

答案 0 :(得分:2)

所以,第一个问题,don't pass null to inflate()。通过父ViewGroupfalse表示您还不想附加它:

View inflatedView = mLayoutInflater.inflate(R.layout.pending_ribbon, this, false);

完成后,视图应该已经有了LayoutParams,您不必手动设置它们:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParms) inflatedView.getLayoutParams();

ALIGN_PARENT_LEFT规则添加到您的虚增视图中RelativeLayout并非真正使用gravity):

params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

然后添加视图,你应该很高兴:

addView(inflatedView);

答案 1 :(得分:0)

如果我按照正确的方法,你有一个父视图,它是一个RelativeLayout,你需要以子1(文本视图)为中心,子2(线性布局)对齐左边?

尝试:

孩子1

    android:layout_centerInParent="true"
    or
    android:layout_centerHorizontal="true" 

孩子2

    android:layout_alignParentLeft="true"

编辑:

你可以将child 2封装在另一个RelativeLayout

    parentlayout
        child1
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
            <child2
                android:layout_alignParentLeft="true">
        </RelativeLayout>