2016-01-26 29 views
3

我按照Android文檔here的教程進行操作,但它們沒有達到我期望的效果。無法將卡對齊到Android Wear的底部

我已經創建了一個CardFrame來在手錶上顯示一張卡片,並使用屬性app:layout_box="bottom"使其顯示在手錶的底部,但正如您在屏幕截圖中看到的那樣,情況並非如此。下面是我的XML:

<android.support.wearable.view.BoxInsetLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"> 

    <android.support.wearable.view.CardScrollView 
     android:id="@+id/card_scroll_view" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     app:layout_box="bottom"> 

     <android.support.wearable.view.CardFrame 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent"> 

      <LinearLayout 
       android:layout_height="wrap_content" 
       android:layout_width="match_parent" 
       android:orientation="vertical" 
       android:paddingLeft="5dp"> 
       <TextView 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:text="Custom Title" 
        android:textColor="@color/black" 
        android:textSize="20sp"/> 
       <TextView 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:text="Custom Description" 
        android:textColor="@color/black" 
        android:textSize="14sp"/> 
      </LinearLayout> 
     </android.support.wearable.view.CardFrame> 
    </android.support.wearable.view.CardScrollView> 
</android.support.wearable.view.BoxInsetLayout> 

這裏是卡的截圖:

enter image description here

任何人都可以提供一些線索到爲什麼預期該屬性不工作?

+0

我正面臨完全相同的問題。卡片出現在頂部而不是底部。如果我找到解決方案,將在這裏更新。我懷疑屬性「layout_box」的解釋可能不正確。 –

+0

更新:找到了解決問題的辦法,查看下面的答案。 –

回答

4

添加屬性機器人:layout_gravity =「底」CardFrame標籤,就像這樣:

<android.support.wearable.view.CardFrame 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:layout_gravity="bottom"> 

這解決了問題對我來說,和出現在最下方的卡片。

說明: 我認爲屬性「layout_box」的含義從cardframe教程中不是很清楚。從BoxInsetLayout docs看來,layout_box =「bottom」的意思是「確保CardScrollView的底部包含(或裝箱)在centre box」內。這可以防止卡的底部被裁剪掉。這並不意味着「在底部對齊」。 layout_gravity屬性將卡放置在底部。 layout_box屬性確保卡內容的底部未被裁剪掉。

+0

謝謝! Upvoted嘗試和測試了這一點,很高興接受,一旦我驗證了。如果這不是完整的代碼,你認爲我應該提交該文檔頁面的錯誤報告嗎?文檔應該按照他們所說的去做。 – AdamMc331

+0

另外,閱讀你的段落,你是否在圓形手錶上測試了這個?您可能需要在圓形手錶上使用這兩個屬性。一個確保它在底部,另一個確保它不會被裁剪掉。我也會稍後再覈實。 – AdamMc331

+0

是的,你可以提交一個錯誤報告。文檔頁面中的xml與它應該輸出的內容不匹配。我在android round磨損模擬器上測試了我的代碼。是的,這兩個屬性都是必需的。如果您沒有在圓形手錶上指定layout_box屬性,則生成的卡片內容有時會從centre_box中取出(具體取決於卡片內容的大小)。 –