2016-03-10 87 views
3

我創建了一個添加到XML佈局的CustomView。 這是一個非常簡單的佈局,不應該顯示任何問題。不過,令我感到惱火的是,某些元素似乎會在佈局中增加兩次(在其內部)。Android CustomView顯示兩次

的XML看起來是這樣的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:id="@+id/activityLayoutRL"> 

    <world.b2g.b2gether.ui.RadarQuickInfo 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/radarDetailView" 
     android:visibility="visible"/> 

</RelativeLayout> 

enter image description here

視圖本身僅僅是延伸的LinearLayout,並像這樣初始化:

public void initView(Context context){ 
    this.context = context; 
    LayoutInflater inflater = (LayoutInflater) 
      context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.radar_detail_layout, this); 
} 

有時似乎切換時改變到另一個內部版本號。我開發API級別23,但更改爲22,有時似乎解決它(至少暫時)

所以我創造了這個構造

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
public RadarQuickInfo(Context context, AttributeSet attrs, 
    int defStyleAttr, int defStyleRes) { 
    super(context, attrs, defStyleAttr, defStyleRes); 
    initView(context); 
} 

自定義視圖的佈局似乎並沒有改變任何東西。所以即使這樣會導致這種效應:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/radarDetailRootViewLL"> 

</LinearLayout> 

我假設,有可能是某處的錯誤? 有什麼建議嗎?

+0

佈局能否請你告訴我們你的'radar_detail_layout'? –

+0

即使佈局爲空,也會發生這種情況。但是,當然,我爲你編輯了這篇文章。謝謝! –

+0

你能提供完整的initView()嗎? –

回答

0

包裝你的自定義視圖與<merge>

+0

那麼,我嘗試了很多,但這似乎並沒有幫助。不管怎麼說,還是要謝謝你。 –

+0

合併標籤後,您需要在佈局xml中刪除根元素。 – Hyperion