2017-08-10 24 views
1

我使用合併自定義視圖中的標籤,試圖把layout_marginTop或paddingTop於父視圖,但不起作用。這裏是我的代碼 文件名:my_view.xml保證金或填充不工作使用<合併標籤的android

<merge 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android_layout_marginTop="17dp" > // This margin is lost! 
    // content here ... 
</merge> 

所以在我的自定義視圖文件,MyView.java,我只是誇大這個my_view.xml。但android_layout_marginTop信息丟失。

public class MyView { 
    private void initViews() { 
     View view = LayoutInflator.from(context).inflate(R.layout.my_view, this); 
     // get rest views 
    } 
} 

我已經嘗試使用LayoutParams在代碼中設置邊距和填充,但仍然無法工作。 您的幫助,將不勝感激!

回答

2

<merge>標記不是View,所以嘗試在其上設置邊距不起作用。

它看起來像你繼「複合控制」的模式,在這裏你創建的一些常見ViewGroup一個子類(一個LinearLayout,也許),然後擡高一些其他的標準View s轉換它。如果是這種情況......

<merge>標記中刪除所有layout_屬性,而是將它們放置在自定義視圖的標記上,無論您在屏幕布局中使用它的哪個位置。事情是這樣的:

<com.example.stackoverflow.MyView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="17dp" 
    ... 
    />