android - 单个活动或多个活动中的多个布局?
问题描述
我对布局和活动有疑问,主要关注的是应用程序的效率。我的问题是
在单个活动(如单个主活动)中使用多个布局 XML 文件是否简单高效,只需更改不同 XML 文件的视图内容,例如:使用处理程序在单个活动上登录和注册布局文件
或者
不同的活动,例如登录页面和注册页面,有单独的活动和相应的布局文件。
就效率和易用性而言,哪个是最佳实践?还请列出这些方法的优缺点?以及使用这些方法中的任何一种的情况?
谢谢你 。
解决方案
方法 - 1:
请参阅android.widget.ViewFlipper的完整示例。使用它,您可以从 xml 创建不同的布局,然后使用以下简单方法在它们之间切换:
ViewFlipper viewFlipper = (ViewFlipper) findViewById(R.id.myViewFlipper);
// or you can switch selecting the layout that you want to display
viewFlipper.setDisplayedChild(1);
viewFlipper.setDisplayedChild(viewFlipper.indexOfChild(findViewById(R.id.secondLayout)
具有两种布局的XML示例:
<ViewFlipper
android:id="@+id/myViewFlipper"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/firstLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
[...]
</LinearLayout>
<LinearLayout
android:id="@+id/thirdLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
[...]
</LinearLayout>
</ViewFlipper>
方法 - 2:
将小部件添加ViewSwitcher
到您的 xml 布局文件。添加**ViewSwitcher**
2 个新布局
viewSwitcher = (ViewSwitcher)findViewById(R.id.viewSwitcher1);
myFirstView= findViewById(R.id.view1);
mySecondView = findViewById(R.id.view2);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (viewSwitcher.getCurrentView() != myFirstView){
viewSwitcher.showPrevious();
} else if (viewSwitcher.getCurrentView() != mySecondView){
viewSwitcher.showNext();
}
}
});
具有两种布局的 XML 示例:
<ViewSwitcher
android:id="@+id/viewSwitcher1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:inAnimation="@android:anim/slide_in_left" >
<LinearLayout
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/text"
android:text="This is simplezdscsdc text"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/text"
android:text="This issdsdsds simplezdscsdc text"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
</ViewSwitcher>
注意:- ViewFlipper 最适合单个活动中的多个布局。
推荐阅读
- javascript - Unable to access cookie from fetch() response
- c# - C# 中的 SQL Server Express 连接字符串错误
- python - 使用调试 Python 安装在 Windows 上构建 Python-C 扩展
- php - How can I call PHP script with arguments in python
- css - How to create four block using flex?
- r - R:用“其他”替换稀有值
- android - 如何在kotlin的片段中设置recyclerview适配器
- r - 在 R 中,如何从 auto.arima 结果中捕获 ARIMA 元素
- javascript - How can I remove visual effect on pictures' slideshow?
- amazon-web-services - AWS EMR step doesn't find jar imported from s3