2017-04-25 83 views
0

我在Android Wear活動中佈置了四個略微不同大小的ImageViews的網格,並且希望均勻間隔的網格與縮放的ImageViews適合網格單元格。在Android Wear上佈置均勻間隔網格的更好方法

我已經完成了嵌套的線性佈局,其中包括兩端的緩衝區列以將單元更推入中間(以避免在圓形手錶的邊緣上進行裁剪)和底部的緩衝區以推動某些圓形手錶上的「下巴」上方的細胞。這工作正常,但我通常嘗試避免嵌套的線性佈局。有沒有更好的辦法?

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@id/goal_strip" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:id="@+id/goal_actions" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:orientation="horizontal" 
     android:visibility="gone" 
     android:layout_weight="1"> 
     <FrameLayout 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:layout_weight="0.2"/> 
     <ImageView 
      android:id="@+id/cancel_goal" 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:layout_weight="0.8" 
      android:layout_gravity="center" 
      android:scaleType="fitCenter" 
      android:scaleX="0.8" 
      android:scaleY="0.8" 
      android:textColor="@color/black" 
      android:src="@drawable/minus_light"/> 
     <ImageView 
      android:id="@+id/add_goal" 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:layout_weight="0.8" 
      android:layout_gravity="center" 
      android:textColor="@color/black" 
      android:src="@drawable/ic_add_circle_white_24dp"/> 
     <FrameLayout 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:layout_weight="0.2"/> 
    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/cards" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:visibility="gone" 
     android:orientation="horizontal" 
     android:layout_weight="1"> 
     <FrameLayout 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:layout_weight="0.2"/> 
     <ImageView 
      android:id="@+id/yellow_card" 
      android:layout_height="wrap_content" 
      android:layout_width="0dp" 
      android:layout_weight="0.8" 
      android:layout_gravity="center" 
      android:textColor="@color/black" 
      android:src="@drawable/yellow_card"/> 
     <ImageView 
      android:id="@+id/red_card" 
      android:layout_height="wrap_content" 
      android:layout_width="0dp" 
      android:layout_weight="0.8" 
      android:layout_gravity="center" 
      android:textColor="@color/black" 
      android:src="@drawable/red_card"/> 
     <FrameLayout 
      android:layout_height="match_parent" 
      android:layout_width="0dp" 
      android:layout_weight="0.2"/> 
    </LinearLayout> 
    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.1"/> 
</LinearLayout> 

這是所需的最終結果:enter image description here

回答

1

老實說,我不認爲有一個LinearLayout內的另一個LinearLayout是壞的。但你可能要考慮使用邊距或填充,而不是那些額外的FrameLayouts

+0

我真的不喜歡FrameLayouts,但看不到任何其他方式做%margin。麻煩的是,錶盤的尺寸範圍很廣,40dp可以在大表上看起來很棒,並且可以在小表上絕對抽取圖標。但我對想法持開放態度。 – Opus1217

+0

我將在dimens.xml中定義邊距,並使用模擬器爲每個密度桶找到正確的值。在我看來,這是多一點工作,但是更好的解決方案。 – TofferJ