4

我正在開發Android TV應用程序,但我對VerticalGridFragment呈現的標準陰影不太滿意,我希望它更小並且稍暗一點。Android TV:VerticalGridFragment陰影尺寸和顏色

我已經通過代碼搜索,但我沒有找到任何完整的工作解決方案。 在我的VerticalGridPresenter子類中,我可以覆蓋的唯一方法是createShadowOverlayOptions,但我無法得到我想要的結果。

我想出的唯一解決方法是定義以下尺寸,因此,在支持庫中聲明的那些被覆蓋:

<dimen name="lb_material_shadow_details_z">3dp</dimen> 
<dimen name="lb_material_shadow_focused_z">4dp</dimen> 
<dimen name="lb_material_shadow_normal_z">3dp</dimen> 

但它更多的黑客,而不是一個妥善的解決辦法。

這是標準的影子:

Standard shadow

這是結果我和我目前黑客獲取:

enter image description here

正如你我所看到的,它的體積更小,但我不能改變顏色。

是否有適當的方法來設置VerticalGridFragmentRowsFragment類的陰影顏色和尺寸?

我使用的是最新的Leanback版:

compile 'com.android.support:leanback-v17:25.2.0' 

minSdkVersion是17,因爲定製的Android電視播放器,但它的罰款,有來自21

回答

1

它的工作開始其實我已經之前向Leanback團隊詢問過這個問題,他們說推薦的定製組件的方式是通過覆蓋樣式和維度。所以這可能有助於減輕你的一些擔心。

但是,我們還必須自定義視圖上的陰影。我們通過創建我們自己的觀點和我們自己的觀點主持人(而不是使用他們的ImageCardView)來做到這一點。因此,我們可以在演示級別設置自己的陰影。

如果你看一下文檔ListRowPresenter文檔說:

ListRowPresenter應用默認的陰影,每個子視圖。調用setShadowEnabled(boolean)禁用陰影。子類可以在isUsingDefaultShadow()中覆蓋並返回false,並用其自己的影子實現進行替換。

多看他們是如何處理的陰影,請考慮的ListRowPresenter的源代碼,並檢查了ShadowHelperShadowHelperApi21課程,看看他們是如何實現的添加陰影到他們的列表項。我們實際上只是複製了這兩個類,因爲它們是包本地的。

您也可以覆蓋ShadowOverlayHelper.Options createShadowOverlayOptions(),ListRowPresenter,它可以讓您更改角部半徑以及聚焦和未聚焦z的能力。

+0

感謝提示:接受,因爲它指向我實現自定義陰影的正確類和邏輯(當然,我不能假裝在這裏得到完整的實現)。 – fasteque