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不足以显示它。层次浏览器帮助我弄明白了这一点。

相关问题