3

我想從一個XML文件充氣組後創建一個複合視圖組。如何填充從LinearLayout擴展的複合視圖組?

視圖組的組成如下:LinearLayout Root,2個子LinearLayouts。我能夠在佈局編輯器中正確地看到佈局;但是,當我嘗試從編輯器添加視圖(如按鈕)時,視圖不顯示,應用程序立即強制關閉。我被告知我可能需要重寫onLayout方法來正確繪製視圖組件,但我很困惑。

我的班級:

public class FocusBox extends LinearLayout { 
private LinearLayout rootLayout, 
         contentLayout, 
         topLayout; 

public FocusBox(Context context) 
{ 
    super(context, null); 
} 
public FocusBox(Context context, AttributeSet attrs) { 
    super(context, attrs); 

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
inflater.inflate(R.layout.focus_box, this); 

rootLayout = (LinearLayout)findViewById(R.id.focusBoxParent); 
contentLayout = (LinearLayout)findViewById(R.id.focusBottom); 
topLayout = (LinearLayout)findViewById(R.id.focusTop); 

} 
} 

和XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="4dp" 
    android:id="@+id/focusBoxParent" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:background="@drawable/gradients" 
     android:layout_weight=".1" 
     android:gravity="center" 
     android:id="@+id/focusTop" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <TextView 
      android:text="TextView" 
      android:id="@+id/focusTitle" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:layout_width="wrap_content"/> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:layout_weight=".9" 
     android:id="@+id/focusBottom" 
     android:background="@drawable/gradient2" 
     android:orientation="horizontal"> 
    </LinearLayout> 
</LinearLayout> 
+0

您是否解決了問題?我只是嘗試了與上面發佈的代碼完全相同的代碼,它的工作原理完美無瑕。我沒有複製你的代碼,而是單獨來到這個解決方案中,所得到的代碼幾乎完全一樣。我檢查了任何值得注意的差異,但沒有。 – stefs

回答

0

一般來說,如果你從一個有效的XML充氣佈局你不應該得到一個錯誤。你應該做一個乾淨的構建並重新部署應用程序。 同時檢查您是否在其他類的導入語句中使用了正確的類(您可能使用某個第三方庫的FocusBox而不是您所做的)