我有一个包含YouTubePlayerSupportFragment的视图,其周围有一个小方框用于样式化。我想将此视图的多个实例(垂直)添加到另一个视图。我有它可以添加一个视图,但是当我尝试添加多个时,它们只是相互堆叠,因此只有最后添加的那个是可见的。我能够通过编程方式使第一个视图添加更长时间来证明这种情况正在发生,我可以在最顶层的视图下看到它的额外高度。
这是我的代码:
fragment_youtube_video:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp"
android:layout_marginTop="5dp"
android:background="#FFFFFFFF">
<fragment
android:id="@+id/youTubeVideo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment" />
<TextView
android:id="@+id/videoTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="4dp"
android:layout_marginBottom="8dp"
android:textColor="#000000"
android:text="Video" />
</LinearLayout>
fragment_videos:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background">
<ImageView
android:id="@+id/topBar"
android:background="#000000"
android:layout_width="match_parent"
android:layout_height="45dp" />
<ImageView
android:id="@+id/logoImageView"
android:layout_width="120dp"
android:layout_height="60dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:contentDescription="@string/CD_logo"
android:src="@drawable/logo" />
<RelativeLayout
android:id="@+id/pagerTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/logoImageView"
android:background="#80000000"
android:paddingBottom="10dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:paddingTop="10dp"
android:layout_marginLeft="12dp"
android:layout_marginTop="5dp"
android:layout_marginRight="12dp" >
[REMOVED FOR SPACE]
</RelativeLayout>
<ScrollView
android:id="@+id/scrollableVideoBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/pagerTitle"
android:layout_alignRight="@+id/pagerTitle"
android:layout_below="@+id/pagerTitle">
<LinearLayout
android:id="@+id/videosLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#a0000000">
</LinearLayout>
</ScrollView>
</RelativeLayout>
VideosFragment.java:
private void addVideoViews() {
int count = 0;
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
for (String vidURL : videoURLs) {
new YoutubeFragment();
YoutubeFragment player = YoutubeFragment.newInstance(count, vidURL);
fragmentTransaction.add(R.id.videosLayout, player, "x_" + count);
count++;
}
fragmentTransaction.commit();
}
我可以提供更多代码,但我相信这些是必要的部分。如果我这样做不正确,也请随时告诉我。我是如此接近,我只是无法弄清楚为什么他们正在堆叠。
任何帮助将不胜感激!
答案 0 :(得分:1)
我们进入了聊天,这就是我们的目标:
LinearLayout parentLayout = (LinearLayout) view.findViewById(R.id.videosLayout);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
LayoutInflater inflater = LayoutInflater.from(getActivity());
for (String vidURL : videoURLs) {
final String vidUrl2 = vidURL;
LinearLayout placeholder = (LinearLayout) inflater.inflate(R.layout.fragment_youtube_video, container, false);
View youtuber = placeholder.findViewById(R.id.youTubeVideo);
YouTubePlayerSupportFragment player = new YouTubePlayerSupportFragment();
fragmentTransaction.add(youtuber.getId(), player);
placeholder.setId(12345);
parentLayout.addView(placeholder);
player.initialize("secret", new OnInitializedListener() {
@Override
public void onInitializationSuccess(Provider arg0, YouTubePlayer arg1,
boolean arg2) {
if (!arg2) {
arg1.cueVideo(vidUrl2);
}
}
@Override
public void onInitializationFailure(Provider arg0,
YouTubeInitializationResult arg1) {
}
});
}
fragmentTransaction.commit();
占位符是一个带有两个子节点的LinearLayout,一个用于保存youtube片段的LinearLayout和一个用于保存标题的TextView。
答案 1 :(得分:0)
我假设,当您添加多个视频时,您只是在片段中交换它们。没有多个片段,因此在任何给定时间只能显示一个视频。
我认为您应该使用ListView,这样,您可以使用大量具有相同总体布局资源的视频填充它。希望这会有所帮助。