1

我想以編程方式和動態構建整個片段佈局。所以我創造了這個代碼:無法將視圖添加到片段中的嵌套線性佈局

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    final View view = inflater.inflate(R.layout.empty_container, container, false); 

    final FrameLayout rootView = (FrameLayout) view.findViewById(R.id.empty_container); 

    final LinearLayout linearLayout = new LinearLayout(getActivity()); 
    linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
    linearLayout.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout.setBackgroundColor(Color.BLACK); 

    rootView.addView(linearLayout); 

    final Button button = new Button(getActivity()); 
    button.setBackgroundColor(Color.GREEN); 
    button.setText("button name"); 
    button.setLayoutParams(new LinearLayout.LayoutParams(100, 100)); 

    linearLayout.addView(button); 

    return view; 
} 

和XML:

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

我無法弄清楚,爲什麼這不能正常工作。按鈕根本不可見(但線性佈局是可見的 - 整個屏幕是黑色的)。當我將其中一個按鈕佈局參數設置爲MATCH_PARENT它突然出現,但是當我將它設置爲100像素或WRAP_CONTENT它沒有顯示。

+0

打開Android設備監控,運行應用程序,然後與樹查看器查看您的DOM。您將能夠看到視圖是否被添加到您的DOM。 –

+0

http://developer.android.com/tools/help/hierarchy-viewer.html –

+0

使用層次結構查看器我發現按鈕被隱藏在工具欄下,謝謝@RussellElfenbein – tymbark

回答

0

它看起來像你正在添加它。 打開Android設備監視器,運行該應用程序,然後使用樹查看器檢查您的DOM。您將能夠看到視圖是否被添加到您的DOM。

developer.android.com/tools/help/hierarchy-viewer.html

0

爲什麼不直接讓根視圖LinearLayout?然後,您可以將根視圖投射到LinearLayout,因爲您已經參照了它,所以不需要通過id查找它。也不知道你打算通過這一行linearLayout.setGravity(LinearLayout.HORIZONTAL);檢查此鏈接的有效值放入setGravityhttp://developer.android.com/reference/android/view/Gravity.html

+0

對不起,它應該是'setOrientation'而不是重力,如果我需要在更多的孩子的'FrameLayout'內部有多個線性佈局呢?對於我的問題,我有一個解決方法,我只是想知道,爲什麼這段代碼不工作,爲什麼將其中一個按鈕參數改爲'MATCH_PARENT'使按鈕顯示。編輯:找到上面發佈的解決方案... – tymbark

0

該按鈕隱藏在工具欄下,並且大小100px x 100px不足以顯示它。層次瀏覽器幫助我弄明白了這一點。

相關問題