0

我有一个活动,其中我的视图(表格和标题表)重叠

private ViewGroup createTable(ViewGroup root) {
    // TODO Auto-generated method stub
    TableLayout table = new TableLayout(getActivity());
    table.setStretchAllColumns(true);
    table.setShrinkAllColumns(true);

    TableLayout headertable = new TableLayout(getActivity());
    headertable.setStretchAllColumns(true);
    headertable.setShrinkAllColumns(true);

    /* Adding stuff to headertable which contains...  */
            /* ...table content I DO NOT WANT to scroll*/

    root.addView(headertable);

    for (int i = -2; i <= 100; i++) {

                    if (i > 0) {
            /*Set up empty views*/
                /*...3 empty views will be set*/
                    }

        /* Adding stuff to table which contains...  */
                    /* ...table content I WANT to scroll*/

    }

    ScrollView sv = new ScrollView(getActivity());
    sv.addView(table);
    root.addView(sv);
    return root;
}

我基本上把一张桌子分成了标题表和表格。我想滚动表格但不是标题表。但是,我的表(应该在标题表下方)与它重叠。因此,正如您在上面看到的,我添加了空视图(因此它从 headertable (有三行)下方开始),但意识到这不起作用。一旦我向下滚动,空视图就会向上滑动,并且我的标题表再次被阻塞。

我所有的观点都是以编程方式提出的。这个活动是一个片段活动。XML 文件包含

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff" >

</FrameLayout>

任何帮助,将不胜感激。提前致谢。

4

1 回答 1

0

我不知道这是否是最好的方法,但我是这样做的:

主要的.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<FrameLayout
    android:id="@+id/pane"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</LinearLayout>

header_list.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
            android:id="@+id/header"
            android:layout_width="fill_parent"
            android:layout_height="30dp"
            android:layout_alignParentTop="true" />
    <ListView
            android:id="@id/android:list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_below="@id/header" />
    <TextView
            android:id="@android:id/empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/header"
            android:gravity="center" />
</RelativeLayout>

RecipeListFragment.java

public class RecipeListFragment extends ListFragment {
    private TextView header;
    private TextView empty;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.common_list, container, false);
        header = (TextView) v.findViewById(R.id.header);
        empty = (TextView) v.findViewById(android.R.id.empty);
        header.setText(R.string.header_recipe);
        empty.setText(R.string.empty_recipes);
        return v;
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        // List code here
    }
}

这段代码只有一个标题行,但您可以将该 TextView 更改为 TableLayout,然后以相同的方式填充它,为您提供标题表并将列表放在它下面,这样它就不会滚动到它的顶部。

希望这可以帮助!

于 2012-04-14T14:03:25.280 回答