Нужно отобразить стандартные
Views над
LibGDX.Наткнулся на
это в официальной документации.Сделал, как там говорилось, но
Fragment с
LibGDX при старте
Activity инфлейтю во
FrameLayout, а не в содержимом
Activity, чтобы было видно
Views.И всё работает, но моих
Views над
FrameLayout из
Activity layout не видно, будто
Fragment всё равно стал
fullscreen и заполнил всё пространство Activity.Каким образом , я могу этого избежать?
GameActivity layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="..."> <!--путь к Activity-->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- my views...-->
</RelativeLayout>
<FrameLayout
android:id="@+id/game_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</RelativeLayout>
Код
GameActivity:
public class GameActivity extends AppCompatActivity implements AndroidFragmentApplication.Callbacks {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
setupGameFragment();
}
private void setupGameFragment() {
GameFragment fragment = new GameFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.game_fragment_container, fragment);
transaction.commit();
}
@Override
public void exit() {
}
}
Код
GameFragment:
public class GameFragment extends AndroidFragmentApplication {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return initializeForView(new GameLauncher());
}
}
Ответ:
Нужно было изменить флаг
setZOrderOnTop
у
SurfaceView
,
на которой рисуется
LibGDX.
Код
GameFragment:
public class GameFragment extends AndroidFragmentApplication {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = initializeForView(new GameLauncher(), config);
setupSurfaceView();
return view;
}
private void setupSurfaceView() {
if (graphics.getView() instanceof SurfaceView) {
SurfaceView surfaceView = (SurfaceView) graphics.getView();
surfaceView.setZOrderOnTop(false);
}
}
}
Cпасибо
Денису Загаевскому!