我是JME3游戏引擎的新手,但我知道Android XML GUI布局相当不错。我在这里有一个简单的布局,我不知道哪里出了问题。这是我的XML代码:

<?xml version="1.0" encoding="UTF-8"?>
<nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://nifty-gui.sourceforge.net/nifty-1.3.xsd
                       http://nifty-gui.sourceforge.net/nifty-1.3.xsd">

<useControls filename="nifty-default-controls.xml" />
<useStyles filename="nifty-default-styles.xml" />

<screen id="start" controller="com.jasoncrosby.game.farkle.gui.MenuScreenGui">
    <layer id="layer" backgroundColor="#66CD00" childLayout="center">
        <panel id="panel" align="center" valign="center" childLayout="center" visibleToMouse="true">
            <image filename="Textures/wood_floor.png" height="95%" width="95%"/>

            <panel id="panel" align="center" valign="center" childLayout="center" visibleToMouse="true">
                <text text="test" font="Interface/Fonts/Eraser.fnt"></text>
            </panel>
        </panel>
    </layer>
</screen>




一切正常,直到显示文本为止。我尝试了不同的对齐方式,并尝试将文本移动到不同的面板中,但是无论我做什么,文本都永远不会位于屏幕的中央。到目前为止,它始终在左上角,我只能看到文本的右下部分。我敢肯定它一定很简单,但是由于我是新手,所以我什么都没注意到。我在这里先向您的帮助表示感谢。

最佳答案

您可能正在使用旧的Nifty版本。您的第一个ID为“ =“ panel”的面板使用childLayout =“ center”,它具有两个子元素(一个图像和另一个面板)。 1.3.1之前的Nifty版本不支持此功能。

这是来自Nifty Manual PDF的引用:


  Nifty 1.3.1中改进的另一件事是
  childLayout =“ center”现在支持多个子元素!在
  1.3.1之前的版本childLayout =“ center”仅支持单个
  子元素和其他元素会发生奇怪的事情。这个
  现在也得到了改进,childLayout =“ center”支持更多
  多于一个子元素。


我已经在Nifty 1.3.2中尝试过XML,并且文本位于屏幕的中央。

PS:与您的问题无关:对多个元素使用相同的ID(您有两个ID为“ panel”的面板)不是一个好主意。不会发生任何不良事件(除了日志中的警告),但是当您尝试执行findElementByName()时,可能会遇到一些意外的元素。

09-25 21:05