我有一个相对布局,它充当一个动态更改文本内容的按钮。此文本使用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">
我将视图扩展到父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);
答案 0 :(得分:2)
所以,第一个问题,don't pass null
to inflate()
。通过父ViewGroup
和false
表示您还不想附加它:
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>