什么是XML中的根布局?

时间:2012-07-12 10:38:24

标签: android

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/rootLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:scrollbars="none"
        android:layout_x="0dp"
        android:layout_y="0dp"
        android:fillViewport="true" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="0dp"
        android:layout_y="0dp"
        android:src="@drawable/background" />
        </LinearLayout>

    </ScrollView>


    </LinearLayout>

这是我的xml文件。很可惜很简单。我的目的是动态增加滚动视图的高度,图像(带滚动视图)视图将逐渐显示。那我怎么能这样做什么是rootLayout在这里以及我如何从我的代码调用rootLayout?

final Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {

                runOnUiThread(new Runnable()
                {
                    public void run() {

                        secondCounter++;
                        yourNewHeight += 10;

                        sv.getLayoutParams().height = yourNewHeight;

                        LinearLayout root = (LinearLayout)      findViewById(R.id.rootLayout);
                        root.invalidate();
                        Log.v("", "" +sv.getLayoutParams().height);

                        if(secondCounter == 20){
                            timer.cancel();
                        }
                    }
                });
            }
        }, delay, period);

这是我在java文件中的代码。但它无法正常工作。伙计们,你们可以帮帮我.. !!!

3 个答案:

答案 0 :(得分:0)

此布局的根目录是AbsoluteLayout

您可以使用以下呼叫获取对此View的所有子节点以及Activity中所有子节点的引用:

mRootView = ((ViewGroup)findViewById(R.id.rootLayout));

请注意,AbsoluteLaoyut很长时间已弃用,您可能希望将其替换为替代ViewGroup,例如LinearLayoutRelativeLayout等,具体取决于你的布局的其余部分以及你想做的事情。

答案 1 :(得分:0)

如果您在代码中适当地夸大了XML(即名为setContentView()),您应该能够使用以下方法引用rootLayout:

AbsoluteLayout root = (AbsoluteLayout) findViewById(R.id.rootLayout);

虽然如果你只是想增加ScrollView的高度,直接调用更有意义:

ScrollView scroll = (ScrollView) findViewById(R.id.scrollView1);

如上所述,您应该使用RelativeLayoutLinearLayout而不是AbsoluteLayout

答案 2 :(得分:0)

由于ScrollView中只能有一个Child,因此您可以使用ScrollView本身作为根元素,并将LinearLayout作为直接且唯一的子元素,在其中您可以添加所需的任何视图。

不推荐使用AbsoluteLayout,我建议不要使用它