Commit 0d23e808 authored by Jian Li's avatar Jian Li Committed by Commit Bot

[Feed v2] Wrap child views in FrameLayout for open source rendering case

This fixes the problem that Discover section is not aligned.

Bug: none
Change-Id: I3baca13282ff3521b68b1592685350cb2af9088b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2303778
Commit-Queue: Jian Li <jianli@chromium.org>
Commit-Queue: Justin DeWitt <dewittj@chromium.org>
Reviewed-by: default avatarJustin DeWitt <dewittj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#789638}
parent 2ee8c0fb
...@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.feed.v2; ...@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.feed.v2;
import android.content.Context; import android.content.Context;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.FrameLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
...@@ -55,17 +57,22 @@ public class NativeViewListRenderer extends RecyclerView.Adapter<NativeViewListR ...@@ -55,17 +57,22 @@ public class NativeViewListRenderer extends RecyclerView.Adapter<NativeViewListR
@Override @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
FrameLayout frameLayout = new FrameLayout(parent.getContext());
frameLayout.setLayoutParams(
new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
// viewType is same as position. // viewType is same as position.
int position = viewType; int position = viewType;
View v;
if (mManager.isNativeView(position)) { if (mManager.isNativeView(position)) {
View v = mManager.getNativeView(position, parent); v = mManager.getNativeView(position, parent);
return new ViewHolder(v);
} else { } else {
TextView v = new TextView(ContextUtils.getApplicationContext()); TextView textView = new TextView(ContextUtils.getApplicationContext());
String message = "Unable to render external view"; String message = "Unable to render external view";
v.setText(message); textView.setText(message);
return new ViewHolder(v); v = textView;
} }
frameLayout.addView(v);
return new ViewHolder(frameLayout);
} }
@Override @Override
......
...@@ -14,6 +14,7 @@ import android.app.Activity; ...@@ -14,6 +14,7 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
...@@ -78,8 +79,10 @@ public class NativeViewListRendererTest { ...@@ -78,8 +79,10 @@ public class NativeViewListRendererTest {
mRenderer.bind(mManager); mRenderer.bind(mManager);
NativeViewListRenderer.ViewHolder viewHolder = mRenderer.onCreateViewHolder( NativeViewListRenderer.ViewHolder viewHolder = mRenderer.onCreateViewHolder(
new DummyViewGroup(mContext), mRenderer.getItemViewType(1)); new DummyViewGroup(mContext), mRenderer.getItemViewType(1));
assertThat(viewHolder.itemView).isInstanceOf(TextView.class); assertThat(viewHolder.itemView).isInstanceOf(FrameLayout.class);
assertEquals("2", ((TextView) viewHolder.itemView).getText()); FrameLayout frameLayout = (FrameLayout) viewHolder.itemView;
assertThat(frameLayout.getChildAt(0)).isInstanceOf(TextView.class);
assertEquals("2", ((TextView) frameLayout.getChildAt(0)).getText());
} }
@Test @Test
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment