3

我知道onCreate()我可以通过以下方式从 XML 中扩展视图:

loadingScreen = (RelativeLayout) findViewById(R.id.loadingScreen);

但我怎么能从另一个角度做到这一点呢?GONE我试图通过将其可见性设置为来调用加载屏幕,VISIBLE但似乎无法从我的glSurfaceView

4

4 回答 4

3

如果你想膨胀一个布局,代码如下所示:

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout myRoot = new LinearLayout(context);
View itemView = inflater.inflate(R.layout.layout_details, myRoot);

在这里,您首先创建一个新的 LinearLayout,然后将 id 为 R.layout.layout_details 的布局膨胀到其中。然后 inflate 方法返回 myRoot 视图。

这是一个关于 LayoutInflater 的教程:

于 2011-08-12T00:44:40.977 回答
1

那实际上并没有膨胀。膨胀是解析 XML 布局文件并从中创建 View 和 ViewGroup 类实例的结构的过程(例如setContentView(),在后台为您执行此操作)。

您所做的是获取对您在 XML 布局文件中定义的代码中的视图的引用。要更改您的可见性,您GLSurfaceView必须像上面那样引用它。但请记住,视图(GLSurfaceView在这种情况下)必须在您的布局文件中定义。

引用后,您必须调用 GLSurfaceView.setVisibility() 来更改它的可见性。

这是一个例子:

GLSurfaceView glsurface = (GLSurfaceView) findViewById(R.id.myglsurfaceid);
glsurface.setVisibility(View.VISIBLE);

当然,您可以使用View.INVISIBLEView.GONE两者之一,这取决于您想要做什么。

如果您引用一个布局(例如 a RelativeLayout),您可能会使用您的 RelativeLayout 实例的 findViewById() 找到此布局的子级:

RelativeLayour rl = (RelativeLayout) findViewById(R.id.mylayout);
(Button) mybutton = (Button) rl.findViewById(R.id.mybutton);

但这通常不是必需的(至少在您刚开始使用 Android 时),因为活动 findViewById() 会找到所有显示的视图,即使在子布局中也是如此。如果您的 ui 结构中有重复的 ID(我从未遇到过这种情况)并且想要指定在哪里查找您的特定视图,则只需使用它。

于 2011-08-12T00:34:46.257 回答
0

您无法获得对current或 current , (your current content)View中不存在的a 的引用,但您可以使用from current从另一个布局创建新的。LayoutViewActivityViewXMLLayoutInflaterActivity


您可以向您当前Activity的内容添加一个新View的,这就是您所说的“加载屏幕”,甚至可以通过将其显示为Dialog或通过创建View然后将其添加到您的根布局中Activity

我希望我帮助了你

于 2011-08-12T00:34:41.450 回答
0

如果我正确理解你想要做什么:

假设您有一个 glSurfaceView 对象,并且您想获取该对象内部的视图。您将执行与正常视图相同的操作。假设一个按钮:

Button button = (Button) glSurfaceView.findViewById(R.id.buttonid);

如果您的意思有所不同,请在评论中告诉我。

编辑:然后你可以设置按钮的可见性:

button.setVisibility(Button.GONE)
于 2011-08-12T00:36:01.793 回答