繁体   English   中英

处理多个“添加”屏幕的最佳方法是什么

[英]What is the best way to handle multiple “add” screens

我正在使用Xamarin制作一个Android应用程序,该应用程序允许用户添加然后查看各种类型的信息。 目前,我为用户能够存储的每种类型的信息制作了一个“添加项目”屏幕,但当前为11个屏幕,而当我添加显示视图时,则为11个屏幕。 最终,这个数字可能还会增加。 有没有更好的方法来处理这种事情?

更多详情:

为了使用两个项目做一个非常简单的示例,假设用户可以存储有关汽车的以下信息:

  1. 外观颜色
  2. 内部颜色
  3. 门数量。

然后,假设用户可以存储有关建筑物的以下内容:

  1. 地板高度
  2. 地址
  3. 电话号码

对于汽车的“添加项目”屏幕,我需要每个信息的文本视图和纯视图,然后说我希望在底部的框允许用户上传图像。 然后,对于建筑物的“添加项目”屏幕,我再次希望每条信息都具有textviews和plainviews,但是这次我希望在底部有一个用于注释的框。

同样,这是一个简单的例子。 实际上,屏幕在整体上看起来很不一样,但是在某种意义上说它们具有相同的功能,即它们允许用户添加信息,但是这些信息在大多数情况下彼此之间也有很大不同。

TLDR :处理具有相同相对目的但外观不同的屏幕的最佳方法是什么? 我是否为每个添加屏幕分别进行活动和布局,或者是否可以使用根据要添加的项目类型而变化的主布局/活动?

PS:我认为使用Xamarin不会起到任何作用,但我想提一下它是安全的。

处理具有相同相对目的但外观不同的屏幕的最佳方法是什么?

  1. 提取出布局的相同部分。 例如,“汽车”和“建筑物”布局均应具有“上传图片”模式。 当您设计这种布局时。 您可以使用<include>标签,如下所示

     <include layout="@layout/upload_image" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
  2. 动态布局也适合您。 例如,“汽车”和“建筑”布局都需要一些textView,您可以编写以下代码:

     public class DynamicLayout : LinearLayout { private List<LinearLayout> layouts; public DynamicLayout(Context context, int textViewcount) : base(context) { this.Initialize(textViewcount); } protected override void OnSizeChanged(int w, int h, int oldw, int oldh) { base.OnSizeChanged(w, h, oldw, oldh); foreach (var l in layouts) { l.LayoutParameters = new LinearLayout.LayoutParams(w / layouts.Count, ViewGroup.LayoutParams.WrapContent); } } private void Initialize(int textViewcount) { this.Orientation = Orientation.Horizontal; layouts = new List<LinearLayout>(); for (int n = 0; n < textViewcount; n++) { var layout = new LinearLayout(this.Context) { Orientation = Orientation.Vertical, LayoutParameters = new LinearLayout.LayoutParams(this.Width / textViewcount, ViewGroup.LayoutParams.WrapContent) }; layouts.Add(layout); if ("car") { var textView = new TextView(this.Context) { Text = "Car" }; layout.AddView(textView); } else if ("building") { var textView = new TextView(this.Context) { Text = "building" }; layout.AddView(textView); } this.AddView(layout); } } } 

    但是动态布局很难控制视图的显示。 如果将两种方法结合使用,效果会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM