<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文件中的代码。但它无法正常工作。伙计们,你们可以帮帮我.. !!!
答案 0 :(得分:0)
此布局的根目录是AbsoluteLayout
。
您可以使用以下呼叫获取对此View
的所有子节点以及Activity
中所有子节点的引用:
mRootView = ((ViewGroup)findViewById(R.id.rootLayout));
请注意,AbsoluteLaoyut
很长时间已弃用,您可能希望将其替换为替代ViewGroup
,例如LinearLayout
,RelativeLayout
等,具体取决于你的布局的其余部分以及你想做的事情。
答案 1 :(得分:0)
如果您在代码中适当地夸大了XML(即名为setContentView()
),您应该能够使用以下方法引用rootLayout:
AbsoluteLayout root = (AbsoluteLayout) findViewById(R.id.rootLayout);
虽然如果你只是想增加ScrollView
的高度,直接调用更有意义:
ScrollView scroll = (ScrollView) findViewById(R.id.scrollView1);
如上所述,您应该使用RelativeLayout
或LinearLayout
而不是AbsoluteLayout
。
答案 2 :(得分:0)
由于ScrollView中只能有一个Child,因此您可以使用ScrollView本身作为根元素,并将LinearLayout作为直接且唯一的子元素,在其中您可以添加所需的任何视图。
不推荐使用AbsoluteLayout,我建议不要使用它