2014-10-06 178 views
0

我有一个相对布局,充当一个动态更改文本内容的按钮。此文本使用android:gravity="center"属性在布局中居中。问题是我需要在相同的相对布局内膨胀另一个布局,但将其对齐到左侧。我可以夸大视图,但它总是显示在中心(因为布局具有中心重力,所以可以预期)。它看起来像这样...在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

所以,第一个问题,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); 
+0

啊,这是做到了。非常感谢你的帮助! – rpm 2014-10-06 20:04:03

0

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

尝试:

孩子1

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

孩子2

android:layout_alignParentLeft="true" 

编辑:

你可以在另一封装孩子2 RelativeLayout的

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

我试过了,它不起作用。问题是父视图(相对布局)已经集中了重力,并且这个重力也需要能够动态设置。因此,以父视图的重心为中心,我无法让子视图以不同的方式对齐。 – rpm 2014-10-06 15:53:20

+0

我扔了一个编辑我的答案,可能有帮助吗? – 2014-10-06 17:19:46