Я пытаюсь динамически добавлять видео YouTube в свое приложение, и проблема в том, что я не могу добавить что-то ниже YoutubePlayerFragment по какой-то причине.Я попытался использовать линейный макет (по вертикали), но кнопка все еще была над фрагментом.
Вот код Java, который имеет метод addTemplate, который динамически добавляет шаблон в представление.
package com.example.shreyass.yourbigday;
import android.app.FragmentManager;
import android.support.v4.app.Fragment;
import android.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.LayoutDirection;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerFragment;
import com.google.android.youtube.player.YouTubePlayerView;
import com.google.android.youtube.player.YouTubeThumbnailLoader;
import com.google.android.youtube.player.YouTubeThumbnailView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
YouTubePlayerFragment videoOne;
Button playVideoOne;
RelativeLayout rlOne;
YouTubeThumbnailView.OnInitializedListener onThumbnailInitializedListener;
YouTubePlayerFragment videoTwo;
Button playVideoTwo;
YouTubePlayer.OnInitializedListener mOnInitializedListener;
YouTubeThumbnailView youTubeThumbnailView;
ArrayList<String> videoIds;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoIds = new ArrayList<>();
rlOne = (RelativeLayout) findViewById(R.id.rlOne);
mOnInitializedListener = new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.loadVideo("rb8RlSVua00");
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
}
};
addTemplate(rlOne);
}
public void addTemplate(RelativeLayout relativeLayout){
final YouTubePlayerFragment ytFragment = new YouTubePlayerFragment();
Button playButton = new Button(this);
Button playButton2 = new Button(this);
VideoTemplate videoTemplate = new VideoTemplate(ytFragment,playButton);
FragmentManager fragMan = getFragmentManager();
FragmentTransaction fragTransaction = fragMan.beginTransaction();
fragTransaction.add(relativeLayout.getId(),videoTemplate.getYtFragment());
fragTransaction.commit();
relativeLayout.addView(playButton);
playButton.setText("Play");
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) playButton.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_BOTTOM,videoTemplate.getYtFragment().getId());
playButton.setLayoutParams(params);
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ytFragment.initialize(youtubeConfig.getApiKey(), mOnInitializedListener);
}
});
}
}
addTemplate инициализирует шаблон (из отдельного класса, код которого приведен ниже) и динамически добавляет фрагмент видео и кнопку воспроизведения в макет.Прямо сейчас, это просто вызывается в OnCreate один раз для целей тестирования.
Класс, который имеет определение шаблона для повторного использования-
package com.example.shreyass.yourbigday;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.google.android.youtube.player.YouTubePlayerFragment;
public class VideoTemplate {
private YouTubePlayerFragment ytFragment;
private Button playButton;
private RelativeLayout previousLayout;
public YouTubePlayerFragment getYtFragment() {
return ytFragment;
}
public void setYtFragment(YouTubePlayerFragment ytFragment) {
this.ytFragment = ytFragment;
}
public VideoTemplate(YouTubePlayerFragment ytFragment, Button playButton) {
this.ytFragment = ytFragment;
this.playButton = playButton;
}
public Button getPlayButton() {
return playButton;
}
public void setPlayButton(Button playButton) {
this.playButton = playButton;
}
}
Прямо сейчас, кнопка добавляется сверхуфрагмента Player, вместо выше или ниже его.