2013-06-03 44 views
-1

我的RelativeLayout有一些填充,但对于某个SurfaceView,我希望它没有填充。我将填充设置为0dp,但它仍然遵循RelativeLayout。我如何覆盖它?Android:覆盖RelativeLayout

+1

你能解释这一点更 – anddevmanu

+0

@anddevmanu我有一个RelativeLayout的具有填充,这样的话每个元素得到填充。然而,让我们说我想要一个没有填充的按钮。我试着将android:paddingLeft设置为仅用于该Button的0dp,但它仍以可视方式结束填充,因此我认为它仍然遵循RelativeLayout。我希望Button的布局与RelativeLayout不同。 – onepiece

回答

1

如果您的根布局设置了填充,那么即使您为子视图设置了0dp填充,也会因根布局而产生填充。使用嵌套布局并将填充分配给所需的布局。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
          android:orientation="horizontal" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content"> 

<RelativeLayout><surfaceview></surfaceview></RelativeLayout> //add padding here if you want 

<RelativeLayout><Button></Button></RelativeLayout> //do not add padding here if you do not want 
</RelativeLayout> 
0

我希望你已经为RelativeLayout而不是SurfaceView设置了填充。

你可以得到的RelativeLayout的实例,并使用下面的代码在运行时设置填充:

RelativeLayout element = MainLayout.findViewById(id); 

    if (element!= null) 
     element.setPadding(0.0.0.0); 

另一种方法:

您可以创建自己的小部件,在使用它们的布局文件。

package com.android.xxx 
public class MyRelativeLayout extends RelativeLayout { 

} 

在您的布局文件中,使用MyRelativeLayout;与使用RelativeLayout相同的方式。

但只是覆盖填充,我不会建议你创建自己的控件。我上面的解决方案应该是更好的方法。

+0

看来您的解决方案是以编程方式更改RelativeLayout。我想要一些元素具有自己的布局,与RelativeLayout不同。 – onepiece

+0

您可以创建自己的小部件并在布局文件中使用它们。 包com.android.xxx 公共类MyRelativeLayout扩展的RelativeLayout { } 在布局文件,使用MyRelativeLayout;与使用RelativeLayout相同的方式。 但是,只是为了覆盖填充,我不会建议你创建自己的小部件。我上面的解决方案应该是更好的方法。 –