2013-06-03 48 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相同的方式。 但是,只是爲了覆蓋填充,我不會建議你創建自己的小部件。我上面的解決方案應該是更好的方法。 –