2016-12-07 137 views
0

我正在製作一個使用Xamarin的Android應用程序,它允許用戶添加並查看各種類型的信息。目前,我爲用戶能夠存儲的每種類型的信息做出了「添加項目」屏幕,但是當前有11個屏幕,並且當我添加顯示視圖時,則是另外11個屏幕。最終可能會進一步增長。有沒有更好的方法來處理這種事情?什麼是處理多個「添加」屏幕的最佳方式

更多詳細信息:

要做到使用2項一個很簡單的例子,讓我們說,用戶可以存儲有關汽車的以下信息:

  1. 外觀顏色
  2. 內飾顏色
  3. 門的數量。

然後讓說,用戶可以保存下列關於建設:

  1. 樓層金額
  2. 地址
  3. 電話號碼

對於汽車 '添加項目'屏幕我想爲每個信息設置textviews和plainviews,然後讓我說我想在底部有一個框允許用戶上傳圖片。然後,對於建築「添加項目」屏幕,我希望再次爲每條信息提供文字瀏覽和簡明視圖,但是這次我希望在底部有一個用於筆記的框。

再次,這是一個簡單的例子。實際上,這些屏幕總體上看起來大不相同,但是它們在允許用戶添加信息的意義上提供相同的功能,但是大多數情況下,這些信息也大不相同。

TLDR:什麼是最好的方式來處理屏幕服務相同的目的,但看起來不同?我是否爲每個添加屏幕製作單獨的活動和佈局,或者是否有一種方法可以使用根據要添加的項目類型而改變的主佈局/活動?

PS:我不認爲使用Xamarin在此扮演任何角色,但我想提到它是安全的。

回答

1

什麼是最好的方式來處理屏幕服務相同的目的,但看起來不同?

  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); 
         } 
        } 
    } 
    

    而是動態的佈局是難以控制的視圖的顯示。如果兩種方法結合使用可能會更好。

+0

謝謝你的回答。這或多或少給了我需要知道的信息。 – xCasper

相關問題