【问题标题】:Android Add Layout View to another Layout programaticallyAndroid以编程方式将布局视图添加到另一个布局
【发布时间】:2014-09-09 03:52:21
【问题描述】:

我有一个垂直方向的 LinearLayout,我想添加另一个带有两个孩子的水平 LinearLayout。

这是我的 xml 布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Gray_background"
android:orientation="vertical" >

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:layout_marginTop="10dp"
    android:background="@color/GrayStroke" />

<LinearLayout
    android:id="@+id/contacts_tab_menulist"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/White"
    android:orientation="vertical" >
</LinearLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/GrayStroke" /> </LinearLayout>

这是应该完成这项工作的代码:

View rootView = inflater.inflate(R.layout.contacts_tab,
            container, false);      

        contacts_tab_menulist = (LinearLayout) getActivity().findViewById(R.id.contacts_tab_menulist);
    //      add LayoutParams
    LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 35);
    LinearLayout listItem = new LinearLayout(getActivity());
    listItem.setLayoutParams(lparams);
    listItem.setOrientation(LinearLayout.HORIZONTAL);

    AspectRatioImageView icon = new AspectRatioImageView(getActivity());
    LinearLayout.LayoutParams ic_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 25);
    icon.setImageResource(R.drawable.contacts_add_contact);
    icon.setLayoutParams(ic_params);
    listItem.addView(icon);

    TextView title = new TextView(getActivity());
    LinearLayout.LayoutParams t_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    title.setText("Add Contact");
    title.setId(0);
    title.setLayoutParams(t_params);
    listItem.addView(title);

    contacts_tab_menulist.addView(listItem);
return rootView;

我在 contacts_tab_menulist.addView(listItem) 上得到一个 nullPointerException。我做错了什么?

【问题讨论】:

  • 您可能需要setContentView(R.layout.&lt;xml_file_name&gt;);,或getLayoutInflater().inflate(R.layout.&lt;xml_file_name&gt;, null);
  • 这应该对你有帮助:stackoverflow.com/questions/6661261/…>
  • @myninjaname 我更新了问题,请看一下。
  • @David 在答案中,我正在做同样的事情。但我仍然遇到同样的错误。
  • contact_tab_menulist 为空,contacts_tab_menulist 是否包含在您的活动布局中?

标签: android android-layout


【解决方案1】:

尝试替换

contacts_tab_menulist = (LinearLayout) getActivity().findViewById(R.id.contacts_tab_menulist);

contacts_tab_menulist = (LinearLayout) rootView.findViewById(R.id.contacts_tab_menulist);

【讨论】:

    【解决方案2】:

    从您的膨胀视图中获取视图,因为膨胀 View 并不意味着它是当前活动视图:

        contacts_tab_menulist = (LinearLayout) rootView.findViewById(R.id.contacts_tab_menulist);
    

    【讨论】:

    • 谢谢。我早些时候尝试过,但没有帮助,我想我还有另一个错误。现在可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多