1

(已解决)- 删除了每个视图上的布局参数 ---

我是 Android 新手,我正在尝试从我在文本字段中输入的项目中添加 TableLayout 中的行。

(已编辑)这是我对此片段的布局:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:tag="contacts">

    <LinearLayout android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical">

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/contactName"
            android:hint="Name"
            android:paddingTop="5dip" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:id="@+id/contactRelationship"
            android:hint="Relationship"
            android:paddingTop="5dip" />

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPostalAddress"
            android:ems="10"
            android:id="@+id/contactAddress"
            android:hint="Address"
            android:paddingTop="5dip" />

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="phone"
                android:ems="10"
                android:id="@+id/contactPhoneNo"
                android:hint="Phone Number"
                android:paddingTop="5dip" />

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/contactPhoneTypeSpinner"
                android:layout_toEndOf="@+id/contactPhoneNo"
                android:layout_toRightOf="@+id/contactPhoneNo"
                android:paddingTop="5dip" />
        </RelativeLayout>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="107dp"
            android:inputType="textMultiLine"
            android:ems="10"
            android:id="@+id/contactSpecialNotes"
            android:paddingTop="5dip"
            android:hint="Write special notes here" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Add Contact"
            android:id="@+id/addContact" />

        <TableLayout
            android:id="@+id/contactsTableLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="5dip"></TableLayout>
    </LinearLayout>
</ScrollView>

(已编辑)这是此片段的代码:

public static class ContactsFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_section_contacts,
                container, false);
        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);


        Spinner phoneTypeSpinner = (Spinner) this.getView().findViewById(R.id.contactPhoneTypeSpinner);
        Button contactButton = (Button) this.getView().findViewById(R.id.addContact);
        final TableLayout tableLayout = (TableLayout) this.getView().findViewById(R.id.contactsTableLayout);
        final EditText txtContactName = (EditText) this.getView().findViewById(R.id.contactName);
        final EditText txtContactRelationship = (EditText) this.getView().findViewById(R.id.contactRelationship);
        final EditText txtContactAddress = (EditText) this.getView().findViewById(R.id.contactAddress);
        final EditText txtContactPhoneNo = (EditText) this.getView().findViewById(R.id.contactPhoneNo);
        Spinner contactPhoneTypeSpinner = (Spinner) this.getView().findViewById(R.id.contactPhoneTypeSpinner);

        EmployeeDataSource datasource = new EmployeeDataSource(getActivity());
        datasource.open();

        //--- Gender Spinner ---
        List<PhoneType> list = datasource.getPhoneTypeList();
        ArrayAdapter<PhoneType> adapter = new ArrayAdapter<PhoneType>(getActivity(),
                android.R.layout.simple_spinner_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        phoneTypeSpinner.setAdapter(adapter);

        phoneTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            }

            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

        contactButton.setOnClickListener(new View.OnClickListener() {
            int rowId = 0;
            @Override
            public void onClick(View v) {

                TableRow tableRow = new TableRow(getActivity().getApplicationContext());
                tableRow.setId(rowId++);
                tableRow.setLayoutParams(new ViewGroup.LayoutParams(
                        ViewGroup.LayoutParams.FILL_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT));

                TextView tvContactName = new TextView(getActivity().getApplicationContext());
                tvContactName.setText(txtContactName.getText().toString());
                tvContactName.setLayoutParams(new ViewGroup.LayoutParams(
                        ViewGroup.LayoutParams.FILL_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT));
                tableRow.addView(tvContactName);

                TextView tvRelationship = new TextView(getActivity().getApplicationContext());
                tvRelationship.setText(txtContactRelationship.getText().toString());
                //tvRelationship.setLayoutParams(new ViewGroup.LayoutParams(
                //        ViewGroup.LayoutParams.FILL_PARENT,
                //        ViewGroup.LayoutParams.WRAP_CONTENT));
                tableRow.addView(tvRelationship);

                TextView tvContactNo = new TextView(getActivity().getApplicationContext());
                tvContactNo.setText(txtContactPhoneNo.getText().toString());
                //tvContactNo.setLayoutParams(new ViewGroup.LayoutParams(
                //        ViewGroup.LayoutParams.FILL_PARENT,
                //        ViewGroup.LayoutParams.WRAP_CONTENT));
                tableRow.addView(tvContactNo);

                tableLayout.addView(tableRow, new TableLayout.LayoutParams(
                        ViewGroup.LayoutParams.FILL_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT));
            }
        });
    }
}

我可以在调试器中看到我的视图中的值已添加到我的 tableRow 中,但我没有看到表格出现在我的屏幕中,我错过了什么或做错了什么?

任何帮助将不胜感激。

谢谢!

4

2 回答 2

0

我猜屏幕的高度增加了。尝试在此布局之上使用 Scrollview。

于 2013-10-03T05:42:08.880 回答
0

我认为你必须改变RelativeLayout财产android:height="wrap_content"而不是android:height="fill_parent"并且也这样做TableLayout

愿这对你有用...

试试这个: 编辑:

public static class ContactsFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_section_contacts,
                container, false);

            Spinner phoneTypeSpinner = (Spinner) rootView.findViewById(R.id.contactPhoneTypeSpinner);
            Button contactButton = (Button) rootView.findViewById(R.id.addContact);
            final TableLayout tableLayout = (TableLayout) rootView.findViewById(R.id.contactsTableLayout);
            final EditText txtContactName = (EditText) rootView.findViewById(R.id.contactName);
            final EditText txtContactRelationship = (EditText) rootView.findViewById(R.id.contactRelationship);
            final EditText txtContactAddress = (EditText) rootView.findViewById(R.id.contactAddress);
            final EditText txtContactPhoneNo = (EditText) rootView.findViewById(R.id.contactPhoneNo);
            Spinner contactPhoneTypeSpinner = (Spinner) rootView.findViewById(R.id.contactPhoneTypeSpinner);

            EmployeeDataSource datasource = new EmployeeDataSource(getActivity());
            datasource.open();

            //--- Gender Spinner ---
            List<PhoneType> list = datasource.getPhoneTypeList();
            ArrayAdapter<PhoneType> adapter = new ArrayAdapter<PhoneType>(getActivity(),
                    android.R.layout.simple_spinner_item, list);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            phoneTypeSpinner.setAdapter(adapter);

            phoneTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                }

                public void onNothingSelected(AdapterView<?> parent) {
                }
            });

            contactButton.setOnClickListener(new View.OnClickListener() {
                int rowId = 0;
                @Override
                public void onClick(View v) {

                    TableRow tableRow = new TableRow(getActivity().getApplicationContext());
                    tableRow.setId(rowId++);

                    TextView tvContactName = new TextView(getActivity().getApplicationContext());
                    tvContactName.setText(txtContactName.getText().toString());

                    tableRow.addView(tvContactName);

                    TextView tvRelationship = new TextView(getActivity().getApplicationContext());
                    tvRelationship.setText(txtContactRelationship.getText().toString());

                    tableRow.addView(tvRelationship);

                    TextView tvContactNo = new TextView(getActivity().getApplicationContext());
                    tvContactNo.setText(txtContactPhoneNo.getText().toString());

                    tableRow.addView(tvContactNo);

                    tableLayout.addView(tableRow, new TableLayout.LayoutParams(
                            ViewGroup.LayoutParams.FILL_PARENT,
                            ViewGroup.LayoutParams.WRAP_CONTENT));
                }
            });

            return rootView;
        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);



        }
    }
于 2013-10-03T05:52:03.180 回答