2011-08-12 6 views
2

onCreate()에서 XML로보기를 부 풀릴 수 있습니다.Android의 다른보기에서 다른보기를 팽창시키는 방법

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

하지만 다른 뷰에서 어떻게 할 수 있습니까? GONE에서 VISIBLE으로 표시 여부를 설정하여 로딩 화면을 불러 오려고 시도했지만 내 glSurfaceView

에서이 작업을 수행하는 방법을 알아낼 수없는 것 같습니다.

답변

2

가 :

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

당신이 먼저 새의 LinearLayout을 만든 다음 당신은 단지 버튼의 가시성을 설정할 수 있습니다 그런 다음 R.layout.layout_details ID를 사용하여 레이아웃을 펼칩니다. inflate 메소드는 myRoot 뷰를 리턴한다.

+0

이유있는 LinearLayout : 여기

은 위해 LayoutInflater에 대한 튜토리얼? – MatheusJardimB

+0

다른 레이아웃에서도 사용할 수 있습니다. –

0

에서이 작업을 수행하는 방법을 알아낼하지 않습니다 존재하여 현재 Layout 또는 현재 View (현재 사용자의 Activity 콘텐츠)이지만 (현재 Activity)을 사용하여 다른 XML 레이아웃에서 새 View을 만들 수 있습니다.


당신이 당신에게 현재 Activity 내용, 새로운 View을 추가 할 수 있습니다

, 그건 당신도 Dialog로 표시하거나 View을 만든 다음에 루트 레이아웃에 추가하여, "로딩 화면"으로 언급 무엇 당신의 Activity

나는 내가 실제로 팽창하지 당신에게

1

그게 도움이되기를 바랍니다. Inflating은 XML 레이아웃 파일을 구문 분석하고 그 중 View 및 ViewGroup 클래스 인스턴스의 구조를 만듭니다 (예 : setContentView()이 백그라운드에서이 작업을 수행함).

XML 레이아웃 파일에서 정의한 코드의 뷰에 대한 참조를 얻는 것입니다. GLSurfaceView의 공개 설정을 변경하려면 위에 설명한 것처럼 참조해야합니다. 그러나보기 (이 경우 GLSurfaceView)는 레이아웃 파일에 정의되어야합니다.

참조 후 GLSurfaceView.setVisibility()를 호출하여 가시성을 변경해야합니다. 당신이 원하는 무슨에 따라, View.INVISIBLE 또는 View.GONE 중 하나

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

물론 당신이 사용할 수 있습니다

다음은 예입니다. 당신이 (예 RelativeLayout으로) 레이아웃을 참조하는 경우

, 당신은 당신의 RelativeLayout의 인스턴스의)합니다 (findViewById를 함께이 레이아웃의 아이를 찾을 수 있습니다 :

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

그러나 그게 보통이 켜지지 없다 (적어도 때를 findViewById()는 하위 레이아웃에서도 표시되는 모든 뷰를 찾습니다. UI 구조에 중복 ID가있는 경우에만 사용해야하며 특정보기를 찾을 위치를 구체적으로 지정해야합니다.

당신이 glSurfaceView 객체가 있고 그 중 하나 내부의 뷰를 잡고 싶어 치죠 :

0

는 내가 제대로 싶어 무엇을 이해합니다. 정상적인보기를 위해했던 것과 똑같은 일을 할 것입니다. 버튼을 말해 보겠습니다.

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

다른 의미가 있다면 의견에 남겨주세요.

편집 : 당신이 코드는 다음과 같은 레이아웃을 팽창하려는 경우

button.setVisibility(Button.GONE) 
관련 문제