难以在android xml中使用多个布局

时间:2017-05-22 21:56:27

标签: android xml android-layout android-studio

我试图使用谷歌Android游戏样本,但游戏有一个活动和单个xml布局。

XML有许多linearlayout,每个代表游戏中的一个屏幕。例如,如果我单击“播放”按钮,活动将禁用所有可见性布局,并启用“播放屏幕”布局以提高可见性。

我无法分离主要活动,因为它导致我的项目中存在许多问题(与活动共享可用物品)。所以我认为我需要保持一个活动和一个xml。

主要问题是在android studio中我看不到xml的设计。 底线我想用android studio轻松设计我的游戏并继续使用我的示例项目。

任何想法让我的生活更轻松吗?

非常感谢!

enter image description here xml文件:

com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load shared library 'libgdx64.so' for target: Linux, 64-bit
    at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:118)
    at com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:34)
    at tester.ExampleGame.initGame(ExampleGame.java:94)
    at display.Display.loop(Display.java:218)
    at display.Display.run(Display.java:116)
    at display.Display.<init>(Display.java:95)
    at tester.ExampleGame.<init>(ExampleGame.java:56)
    at tester.ExampleGame.main(ExampleGame.java:60)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Unable to read file for extraction: libgdx64.so
    at com.badlogic.gdx.utils.SharedLibraryLoader.readFile(SharedLibraryLoader.java:126)
    at com.badlogic.gdx.utils.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:261)
    at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:115)
    ... 7 more

编辑 - 我解决了这个问题,我只需要在布局中添加<?xml version="1.0" encoding="utf-8"?> <FrameLayout 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" > <!-- SIGN-IN SCREEN --> <LinearLayout android:id="@+id/screen_sign_in" style="@style/LLScreen"> <TextView style="@style/GameTitle" /> <TextView style="@style/GameBlurb" /> <Button android:id="@+id/button_single_player" style="@style/MainScreenButton" android:text="@string/single_player" /> <com.google.android.gms.common.SignInButton android:id="@+id/button_sign_in" style="@style/SignInButton" /> </LinearLayout> <!-- MAIN SCREEN --> <LinearLayout android:id="@+id/screen_main" style="@style/LLScreen"> <TextView style="@style/GameTitle" /> <Button android:id="@+id/button_single_player_2" style="@style/MainScreenButton" android:text="@string/single_player" /> <TextView style="@style/MainScreenButtonBlurb" android:text="@string/single_player_explanation" /> <Button android:id="@+id/button_quick_game" style="@style/MainScreenButton" android:text="@string/quick_game" /> <TextView style="@style/MainScreenButtonBlurb" android:text="@string/quick_game_explanation" /> <Button android:id="@+id/button_invite_players" style="@style/MainScreenButton" android:text="@string/invite_players" /> <TextView style="@style/MainScreenButtonBlurb" android:text="@string/invite_players_explanation" /> <Button android:id="@+id/button_see_invitations" style="@style/MainScreenButton" android:text="@string/see_invitations" /> <TextView style="@style/MainScreenButtonBlurb" android:text="@string/see_invitations_explanation" /> <Button android:id="@+id/button_sign_out" style="@style/SignOutButton" android:text="@string/sign_out" /> </LinearLayout> <!-- INVITATION POPUP --> <LinearLayout android:id="@+id/invitation_popup" style="@style/InvPopup"> <TextView android:id="@+id/incoming_invitation_text" style="@style/InvPopupText" /> <Button android:id="@+id/button_accept_popup_invitation" style="@style/InvPopupButton" android:text="@string/accept_popup_invite" /> </LinearLayout> <!-- "PLEASE WAIT" SCREEN --> <LinearLayout android:id="@+id/screen_wait" style="@style/LLScreen"> <TextView style="@style/Blurb" android:text="@string/please_wait" /> </LinearLayout> <!-- GAMEPLAY SCREEN --> <LinearLayout android:id="@+id/screen_game" style="@style/LLScreen"> <TextView android:id="@+id/instructions" style="@style/Instructions" android:text="@string/instructions" /> <TextView android:id="@+id/my_score" style="@style/ScoreDisplay" /> <Button android:id="@+id/button_click_me" style="@style/GameButton" android:text="@string/click_me" android:layout_marginBottom="20dp" /> <TextView android:id="@+id/countdown" style="@style/FigureLabel" /> <LinearLayout style="@style/ScoresBox"> <TextView android:id="@+id/score0" style="@style/ScoreText" /> <TextView android:id="@+id/score1" style="@style/ScoreText" /> <TextView android:id="@+id/score2" style="@style/ScoreText" /> <TextView android:id="@+id/score3" style="@style/ScoreText" /> </LinearLayout> </LinearLayout> </FrameLayout> 。感谢。

3 个答案:

答案 0 :(得分:1)

要避免嵌套布局,您应该使用ConstraintLayout代替。 它允许您将每个View与基于其他Views的规则对齐,甚至可以基于父布局。

但要使用它,您必须在gradle.build文件中添加依赖项:

dependencies {
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
}

全局gradle文件中的Maven Repository

repositories {
    maven {
        url 'https://maven.google.com'
    }
}

以下是一个示例:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView6"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginLeft="16dp" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView33"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toRightOf="@+id/imageView6"
    android:layout_marginLeft="16dp" />

<TextView
    android:text="TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView34"
    app:layout_constraintRight_toRightOf="@+id/textView33"
    android:layout_marginTop="8dp"
    app:layout_constraintTop_toBottomOf="@+id/textView33" />

要了解更多信息:

https://developer.android.com/training/constraint-layout/index.html

https://codelabs.developers.google.com/codelabs/constraint-layout/index.html

答案 1 :(得分:0)

您将根布局id置于评论中,这就是您没有看到任何内容的原因。

在第二行删除FrameLayout

答案 2 :(得分:0)

我解决了这个问题,我只需要在布局中添加android:visibility =“visible”。感谢。