查看彼此重叠

时间:2012-04-14 10:53:11

标签: android android-layout android-fragments android-view android-tablelayout

我有一个活动,其中我的观点(表格和可播放的)重叠

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和table。我想滚动表,但不是headertable。但是,我的表(应该低于headertable)与它重叠。因此,正如你在上面我看到的那样,我添加了空视图(所以它从headertable下面开始(有三行)),但意识到这不起作用。当我向下滚动时,空视图向上滑动,我的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>

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

1 个答案:

答案 0 :(得分:0)

我不知道这是不是最好的方式,但这就是我的方式:

<强> main.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,然后以相同的方式填充它,为您提供标题表并将列表放在其下方,以便它不会滚动到顶部它的。

希望这有帮助!