3

私は、onCreate()次のような方法で XML からビューを膨らませることができることを知っています。

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

しかし、別の観点からこれを行うにはどうすればよいでしょうか。からの可視性を設定して読み込み画面を呼び出そうとしてGONEVISIBLEますが、私のからこれを行う方法を理解できないようです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.INVISIBLEまたはどちらかを使用できます。View.GONE

レイアウト ( などRelativeLayout) を参照する場合、RelativeLayout インスタンスの findViewById() を使用して、このレイアウトの子を見つけることができます。

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

ただし、アクティビティ findViewById() は、サブレイアウトであっても、表示されているすべてのビューを見つけるため、通常は必要ありません (少なくとも Android を使い始めたばかりの場合)。UI構造に重複したIDがあり(まだそのようなケースはありませんでした)、特定のビューを探す場所を指定したい場合にのみ使用する必要があります。

于 2011-08-12T00:34:46.257 に答える
0

あなたが何をしたいのかを正しく理解していれば:

glSurfaceView オブジェクトがあり、その中にあるビューを取得したいとします。通常のビューで行ったのと同じことを行います。ボタンとしましょう:

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

あなたが何か違うことを意味している場合は、コメントでお知らせください。

編集:そして、ボタンの可視性を設定することができます:

button.setVisibility(Button.GONE)
于 2011-08-12T00:36:01.793 に答える
0

current 、または current 、(現在のコンテンツ) にView存在しないへの参照を取得することはできませんが、 from currentを使用して、別のレイアウトから新しい を作成できます。LayoutViewActivityViewXMLLayoutInflaterActivity


Activity現在のコンテンツ、新しいを追加できます。これViewは、「ロード画面」として言及したものDialogですViewActivity

私はあなたを助けたことを願っています

于 2011-08-12T00:34:41.450 に答える