ScrollView无法使用片段

时间:2014-05-28 14:02:17

标签: android android-layout android-fragments

我正在尝试创建一个动态片段。我在其中添加了30个按钮,我希望它可以滚动。

这是片段的xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/holo_orange_light"
    tools:context="com.viewpagerexample.app.FragmentA">

            <ScrollView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/scrollView">

                <TableLayout
                    android:id="@+id/table_layout"
                    android:layout_width="match_parent"
                    android:layout_height="fill_parent"
                    android:baselineAligned="false"
                    android:clickable="false"
                    android:focusable="false"
                    android:focusableInTouchMode="false">
                </TableLayout>
            </ScrollView>
</LinearLayout>

这是我片段的代码:

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_a,container,false);
        // Inflate the layout for this fragment
        int numberOfButtons= getArguments().getInt("someInt",0);
        linearLayout = new LinearLayout(v.getContext());
        view = new TableLayout(v.getContext());
        TableRow tr;
        linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
        // Inflate the layout for this fragment
        view.setOrientation(TableLayout.VERTICAL);
        view.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams
                .MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT));
        TableLayout.LayoutParams layoutParams =  new TableLayout.LayoutParams
                (TableLayout.LayoutParams.FILL_PARENT,TableLayout.LayoutParams.WRAP_CONTENT);
        layoutParams.setMargins(20,20,20,20);
        int numberOfRows = numberOfButtons/2;
        int masaCounter = 0;
        for (int i = 0;i<numberOfRows;i++)
        {

            tr = new TableRow(view.getContext());
            tr.setLayoutParams(layoutParams);
            for (int j= 0;j<2;j++)
            {
                masaCounter++;
                btn = new Button(getActivity());
                btn.setBackgroundResource(R.drawable.buttonstyle);
                btn.setHeight(200);
                btn.setText("Masa" + masaCounter);
                btn.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams
                        .MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT, 1));
                btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    }
                });
                tr.addView(btn);
            }
            view.addView(tr);
        }
        linearLayout.addView(view);
        myView = linearLayout;
        return myView;
    }

我添加了按钮,但我无法看到所有按钮。因为scrollview不起作用。我找不到我做错了什么。我怎样才能让它起作用?

2 个答案:

答案 0 :(得分:2)

将父布局的高度,宽度和ScrollView更改为match_parent,并添加

的属性
 android:fillViewport="true"
在ScrollView中

并将表格布局的高度,宽度更改为wrap_content和fill_parent respectivity将解决您的问题。

答案 1 :(得分:0)

尝试在布局上使用ScrollView作为rootView,并将LinearLayout和其他所有Views放入其中。

像这样:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_orange_light"
tools:context="com.viewpagerexample.app.FragmentA" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TableLayout
        android:id="@+id/table_layout"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:baselineAligned="false"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false" >
    </TableLayout>
</LinearLayout>