相当于android:layout_above =" @ + id / foo"

时间:2016-02-18 20:33:50

标签: android android-relativelayout android-layoutparams

在XML中,你可以这样做:

android:layout_above="@+id/foo" 

使元素位于另一个元素foo之上。

如何以编程方式执行此操作?

虽然RelativeLayout.LayoutParams可以添加规则RelativeLayout.ABOVE但不允许我指定我希望我的视图位于哪个元素上。

2 个答案:

答案 0 :(得分:1)

  

不允许我指定我希望我的视图在哪个元素上面。

当然可以

[来自文档](http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#addRule(int,int))

  

anchor另一个用作锚点的视图的id,或一个布尔值(对于true表示为TRUE,对于false表示为0)。对于不引用其他兄弟的动词(例如,ALIGN_WITH_PARENT_BOTTOM),只需使用-1。

文档中有两种addRule()方法。只需使用带有第二个参数的那个,并给出你想要它固定在上面的View的id。

事实上,你提到的那个,明确地说

  

此方法仅应用于不引用其他兄弟

的约束

(强调我的)

答案 1 :(得分:-1)

您必须为视图设置ID。您可以执行myview.setId(id)或在ressource文件ids.xml中声明一个id,然后在setId(R.id.declared_id)中声明。

link:How can I assign an ID to a view programmatically?