我想以编程方式动态构建整个片段布局。所以我创建了这段代码:
@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 :(得分:0)
为什么不将根视图设为LinearLayout
?然后你可以将根视图转换为LinearLayout
,你不需要通过id找到它,因为你已经引用了它。此行还不确定您的意图linearLayout.setGravity(LinearLayout.HORIZONTAL);
请检查此链接,了解有效值,以便setGravity
http://developer.android.com/reference/android/view/Gravity.html
答案 1 :(得分:0)
按钮隐藏在工具栏下方,尺寸100px x 100px不足以显示它。层次结构查看器帮我解决了这个问题。
答案 2 :(得分:0)
看起来你正在添加它。 打开Android设备监视器,运行应用程序,然后使用树查看器检查您的DOM。您将能够看到是否将视图添加到DOM中。
developer.android.com/tools/help/hierarchy-viewer.html