Java 在“重心”相对布局中向左对齐充气视图

Java 在“重心”相对布局中向左对齐充气视图,java,android,android-layout,Java,Android,Android Layout,我有一个相对的布局,作为一个按钮,文本内容正在被动态更改。此文本使用android:gravity=“center”属性在布局中居中。问题是,我需要在同一相对布局中膨胀另一个布局,但要将其向左对齐。我可以很好地放大视图,但它总是显示在中心(正如预期的那样,因为布局具有重心)。看起来像这样 灰色框是父相对布局,绿色框是我试图向左对齐的视图。我尝试过为各种设置边距-包括父视图一半宽度的左偏移-但到目前为止没有任何效果。有办法做到这一点吗?可能值得补充的是,父相对布局(灰色框)的宽度会有所不同,因此

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

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

正在膨胀的绿色视图的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">

如果我的理解正确,那么您有一个相对的父视图,并且需要将子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>
父布局 孩子1 所以,第一个问题。传入父视图组
false
,表示您还不想附加它:

View inflatedView = mLayoutInflater.inflate(R.layout.pending_ribbon, this, false);
完成此操作后,视图应该已经具有LayoutParams,您不必手动设置它们:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParms) inflatedView.getLayoutParams();
ALIGN\u PARENT\u LEFT
规则添加到膨胀视图中(
RelativeLayout
实际上不使用
重力
):

然后添加视图,您就可以开始了:

addView(inflatedView);

我试过了,但没用。问题是父视图(相对布局)具有中心重力,并且该重力也需要能够动态设置。因此,由于父视图的重力居中,我无法使子视图以不同的方式对齐。啊,就是这样。非常感谢你的帮助!
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
addView(inflatedView);