我正在开发Android 2.1应用程序。
我定义了LinearLayout
类:
public class MyTopBar extends LinearLayout {
...
}
然后,我有一个布局xml文件(content.xml
):
<LinearLayout>
...
</LienarLayout>
我有RootActivity.java
,我想将MyTopBar
设置为此RootActivity中的内容。
然后我的MyActivity扩展了RootActivity
:
public class MyActivity extends RootActivity{
//set xml layout as content here
}
我想将content.xml设置为MyActivity的内容。
作为一个整体,我想使用上述方法来实现MyTopBar
应始终位于屏幕上RootActivity的其他活动的内容低于 MyTopBar
。如何实现这个??
答案 0 :(得分:1)
1您可以将自定义LinearLayout
直接添加到MyActivity
类的xml布局中,如下所示:
<LinearLayout>
<com.full.package.MyTopBar
attributes here like on any other xml views
/>
...
</LinearLayout>
或者您可以使用include
标记在自定义视图中包含布局:
<LinearLayout>
<include layout="@layout/xml_file_containing_mytopbar"
/>
...
</LinearLayout>
2使用:
setContentView(R.layout.other_content);
答案 1 :(得分:0)
TopBar的布局空置,并使用layout.addView(topbarObject);
在其中添加您的Topbar
关于你的第二个问题,就我所知,setContentView只能被调用一次。但是,您可以使用View.inflate(other_content.xml)
对这两个xml文件进行充气,并在需要时添加到父xml布局中。您可以在父布局上removeView()
使用新布局文件addView()
。
编辑: 对于这两个问题的解决方案,您可以拥有父布局,例如。如下:
//Omitting the obvious tags
//parent.xml
<RelativeLayout
android:id="@+id/parentLayout">
<RelativeLayout
android:id="@+id/topLayout">
</RelativeLayout>
<RelativeLayout
android:id="@+id/contentLayout">
</RelativeLayout>
</RelativeLayout>
现在在您的代码中将父布局设置为内容视图,创建TopBar布局的对象并将其添加到topLayout。
setContentView(R.layout.parent);
MyTopBar topBar=new MyTopBar(this);
RelativeLayout toplayout=(RelativeLayout)findViewByid(R.id.topLayout);
topLayout.addView(topBar); //or you can directly add it to the parentLayout, but it won't work for the first question. So better stick to it.
现在膨胀所需的xml布局。并将其添加到contentLayout。
RelativeLayout layout=(RelativeLayout)View.inflate(R.layout.content,null);
contentLayout.addView(layout);//Assuming you've done the findViewById on this.
当您需要显示其他内容xml时,只需调用以下代码即可。
contentLayout.removeAllView();
RelativeLayout layout2=(RelativeLayout)View.inflate(R.layout.other_content,null);
contentLayout.addView(layout2);