我知道onCreate()
我可以通过以下方式从 XML 中扩展视图:
loadingScreen = (RelativeLayout) findViewById(R.id.loadingScreen);
但我怎么能从另一个角度做到这一点呢?GONE
我试图通过将其可见性设置为来调用加载屏幕,VISIBLE
但似乎无法从我的glSurfaceView
我知道onCreate()
我可以通过以下方式从 XML 中扩展视图:
loadingScreen = (RelativeLayout) findViewById(R.id.loadingScreen);
但我怎么能从另一个角度做到这一点呢?GONE
我试图通过将其可见性设置为来调用加载屏幕,VISIBLE
但似乎无法从我的glSurfaceView
如果你想膨胀一个布局,代码如下所示:
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 的教程:
那实际上并没有膨胀。膨胀是解析 XML 布局文件并从中创建 View 和 ViewGroup 类实例的结构的过程(例如setContentView()
,在后台为您执行此操作)。
您所做的是获取对您在 XML 布局文件中定义的代码中的视图的引用。要更改您的可见性,您GLSurfaceView
必须像上面那样引用它。但请记住,视图(GLSurfaceView
在这种情况下)必须在您的布局文件中定义。
引用后,您必须调用 GLSurfaceView.setVisibility() 来更改它的可见性。
这是一个例子:
GLSurfaceView glsurface = (GLSurfaceView) findViewById(R.id.myglsurfaceid);
glsurface.setVisibility(View.VISIBLE);
当然,您可以使用View.INVISIBLE
或View.GONE
两者之一,这取决于您想要做什么。
如果您引用一个布局(例如 a RelativeLayout
),您可能会使用您的 RelativeLayout 实例的 findViewById() 找到此布局的子级:
RelativeLayour rl = (RelativeLayout) findViewById(R.id.mylayout);
(Button) mybutton = (Button) rl.findViewById(R.id.mybutton);
但这通常不是必需的(至少在您刚开始使用 Android 时),因为活动 findViewById() 会找到所有显示的视图,即使在子布局中也是如此。如果您的 ui 结构中有重复的 ID(我从未遇到过这种情况)并且想要指定在哪里查找您的特定视图,则只需使用它。
您无法获得对current或 current , (your current content)View
中不存在的a 的引用,但您可以使用from current从另一个布局创建新的。Layout
View
Activity
View
XML
LayoutInflater
Activity
您可以向您当前Activity
的内容添加一个新View
的,这就是您所说的“加载屏幕”,甚至可以通过将其显示为Dialog
或通过创建View
然后将其添加到您的根布局中Activity
我希望我帮助了你
如果我正确理解你想要做什么:
假设您有一个 glSurfaceView 对象,并且您想获取该对象内部的视图。您将执行与正常视图相同的操作。假设一个按钮:
Button button = (Button) glSurfaceView.findViewById(R.id.buttonid);
如果您的意思有所不同,请在评论中告诉我。
编辑:然后你可以设置按钮的可见性:
button.setVisibility(Button.GONE)