diff --git a/samples/SupportLeanbackDemos/res/values/styles.xml b/samples/SupportLeanbackDemos/res/values/styles.xml
index dd86e7ec8..2d6a23469 100644
--- a/samples/SupportLeanbackDemos/res/values/styles.xml
+++ b/samples/SupportLeanbackDemos/res/values/styles.xml
@@ -29,4 +29,22 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java
index 6797dbe0c..93110a961 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java
@@ -37,15 +37,14 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
private static final boolean TEST_ENTRANCE_TRANSITION = true;
private static final int NUM_ROWS = 10;
- // Row heights default to wrap content
- private static final boolean USE_FIXED_ROW_HEIGHT = false;
private ArrayObjectAdapter mRowsAdapter;
private BackgroundHelper mBackgroundHelper = new BackgroundHelper();
// For good performance, it's important to use a single instance of
// a card presenter for all rows using that presenter.
- final static CardPresenter sCardPresenter = new CardPresenter();
+ final CardPresenter mCardPresenter = new CardPresenter();
+ final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme);
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -99,11 +98,6 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
private void setupRows() {
ListRowPresenter lrp = new ListRowPresenter();
- if (USE_FIXED_ROW_HEIGHT) {
- lrp.setRowHeight(CardPresenter.getRowHeight(getActivity()));
- lrp.setExpandedRowHeight(CardPresenter.getExpandedRowHeight(getActivity()));
- }
-
mRowsAdapter = new ArrayObjectAdapter(lrp);
setAdapter(mRowsAdapter);
@@ -111,7 +105,8 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
private void loadData() {
for (int i = 0; i < NUM_ROWS; ++i) {
- ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(sCardPresenter);
+ ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter((i & 1) == 0 ?
+ mCardPresenter : mCardPresenter2);
listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1));
listRowAdapter.add(new PhotoItem("This is a test", "Only a test", R.drawable.gallery_photo_2));
listRowAdapter.add(new PhotoItem("Android TV", "by Google", R.drawable.gallery_photo_3));
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java
index 29851b335..50a07a3ba 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java
@@ -39,15 +39,14 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
private static final boolean TEST_ENTRANCE_TRANSITION = true;
private static final int NUM_ROWS = 10;
- // Row heights default to wrap content
- private static final boolean USE_FIXED_ROW_HEIGHT = false;
private ArrayObjectAdapter mRowsAdapter;
private BackgroundHelper mBackgroundHelper = new BackgroundHelper();
// For good performance, it's important to use a single instance of
// a card presenter for all rows using that presenter.
- final static CardPresenter sCardPresenter = new CardPresenter();
+ final CardPresenter mCardPresenter = new CardPresenter();
+ final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme);
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -101,11 +100,6 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
private void setupRows() {
ListRowPresenter lrp = new ListRowPresenter();
- if (USE_FIXED_ROW_HEIGHT) {
- lrp.setRowHeight(CardPresenter.getRowHeight(getActivity()));
- lrp.setExpandedRowHeight(CardPresenter.getExpandedRowHeight(getActivity()));
- }
-
mRowsAdapter = new ArrayObjectAdapter(lrp);
setAdapter(mRowsAdapter);
@@ -113,7 +107,8 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
private void loadData() {
for (int i = 0; i < NUM_ROWS; ++i) {
- ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(sCardPresenter);
+ ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter((i & 1) == 0 ?
+ mCardPresenter : mCardPresenter2);
listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1));
listRowAdapter.add(new PhotoItem("This is a test", "Only a test", R.drawable.gallery_photo_2));
listRowAdapter.add(new PhotoItem("Android TV", "by Google", R.drawable.gallery_photo_3));
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java
index f5e486b86..924975d51 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/CardPresenter.java
@@ -15,11 +15,13 @@ package com.example.android.leanback;
import android.content.Context;
import android.graphics.drawable.Drawable;
+import com.example.android.leanback.R;
import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.Presenter;
import android.text.TextUtils;
import android.util.Log;
import android.view.ViewGroup;
+import android.view.ContextThemeWrapper;
import android.view.View.MeasureSpec;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;
@@ -32,38 +34,56 @@ public class CardPresenter extends Presenter {
private static final int IMAGE_HEIGHT_DP = 120;
private static Random sRand = new Random();
- private static int sRowHeight = 0;
- private static int sExpandedRowHeight = 0;
+ private int mRowHeight = 0;
+ private int mExpandedRowHeight = 0;
- private static void setupRowHeights(Context context) {
- if (sRowHeight == 0) {
+ private int mCardThemeResId;
+ private Context mContextThemeWrapper;
+
+ public CardPresenter(int cardThemeResId) {
+ mCardThemeResId = cardThemeResId;
+ }
+
+ public CardPresenter() {
+ mCardThemeResId = 0;
+ }
+
+ private void setupRowHeights(Context context) {
+ if (mRowHeight == 0) {
float density = context.getResources().getDisplayMetrics().density;
int height = (int) (IMAGE_HEIGHT_DP * density + 0.5f);
ImageCardView v = new ImageCardView(context);
v.setMainImageDimensions(LayoutParams.WRAP_CONTENT, height);
v.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
- sRowHeight = v.getMeasuredHeight();
+ mRowHeight = v.getMeasuredHeight();
v.setActivated(true);
v.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
- sExpandedRowHeight = v.getMeasuredHeight();
+ mExpandedRowHeight = v.getMeasuredHeight();
}
}
- public static int getRowHeight(Context context) {
+ public int getRowHeight(Context context) {
setupRowHeights(context);
- return sRowHeight;
+ return mRowHeight;
}
- public static int getExpandedRowHeight(Context context) {
+ public int getExpandedRowHeight(Context context) {
setupRowHeights(context);
- return sExpandedRowHeight;
+ return mExpandedRowHeight;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent) {
Log.d(TAG, "onCreateViewHolder");
- ImageCardView v = new ImageCardView(parent.getContext());
+ Context context = parent.getContext();
+ if (mCardThemeResId != 0) {
+ if (mContextThemeWrapper == null) {
+ mContextThemeWrapper = new ContextThemeWrapper(context, mCardThemeResId);
+ }
+ context = mContextThemeWrapper;
+ }
+ ImageCardView v = new ImageCardView(context);
v.setFocusable(true);
v.setFocusableInTouchMode(true);
// Randomly makes image view crop as a square or just stretch to original
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsFragment.java
index 29b5e304e..8e9456f17 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsFragment.java
@@ -73,17 +73,17 @@ public class RowsFragment extends android.support.v17.leanback.app.RowsFragment
private void setupRows() {
ListRowPresenter lrp = new ListRowPresenter();
- if (USE_FIXED_ROW_HEIGHT) {
- lrp.setRowHeight(CardPresenter.getRowHeight(getActivity()));
- lrp.setExpandedRowHeight(CardPresenter.getExpandedRowHeight(getActivity()));
- }
-
- mRowsAdapter = new ArrayObjectAdapter(lrp);
-
// For good performance, it's important to use a single instance of
// a card presenter for all rows using that presenter.
final CardPresenter cardPresenter = new CardPresenter();
+ if (USE_FIXED_ROW_HEIGHT) {
+ lrp.setRowHeight(cardPresenter.getRowHeight(getActivity()));
+ lrp.setExpandedRowHeight(cardPresenter.getExpandedRowHeight(getActivity()));
+ }
+
+ mRowsAdapter = new ArrayObjectAdapter(lrp);
+
for (int i = 0; i < NUM_ROWS; ++i) {
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);
listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1));
diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsSupportFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsSupportFragment.java
index e0a14031f..1eba32ff8 100644
--- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsSupportFragment.java
+++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/RowsSupportFragment.java
@@ -75,17 +75,17 @@ public class RowsSupportFragment extends android.support.v17.leanback.app.RowsSu
private void setupRows() {
ListRowPresenter lrp = new ListRowPresenter();
- if (USE_FIXED_ROW_HEIGHT) {
- lrp.setRowHeight(CardPresenter.getRowHeight(getActivity()));
- lrp.setExpandedRowHeight(CardPresenter.getExpandedRowHeight(getActivity()));
- }
-
- mRowsAdapter = new ArrayObjectAdapter(lrp);
-
// For good performance, it's important to use a single instance of
// a card presenter for all rows using that presenter.
final CardPresenter cardPresenter = new CardPresenter();
+ if (USE_FIXED_ROW_HEIGHT) {
+ lrp.setRowHeight(cardPresenter.getRowHeight(getActivity()));
+ lrp.setExpandedRowHeight(cardPresenter.getExpandedRowHeight(getActivity()));
+ }
+
+ mRowsAdapter = new ArrayObjectAdapter(lrp);
+
for (int i = 0; i < NUM_ROWS; ++i) {
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);
listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1));