2013-08-25 1 views
0

현재, 나는 상대 레이아웃 내가 그러나이RelativeLayout을 전체 화면으로 사용하지 않으려면 어떻게해야하나요?

layout.addView(myText, params); 
layout.addView(myBtn, param); 

처럼 textviews 및 버튼을 추가 한 후, 프로그램

RelativeLayout layout = new RelativeLayout(this); 

정의가이 전체 화면 내 RelativeLayout의로 채울 수 있습니다 어떻게해야합니까 (프로그래밍 방식으로) 특정 픽셀 수 (dp) 만 화면을 차지하도록 설정합니까? 내 목표는 화면의 하단 절반과 비슷하게 설정하는 것입니다.

Anyhelp? 편집

:

http://i.imgur.com/n1ckBN7.png 내가이 (XML에서) 나에게

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="200dp"> 

내가 전에이 같은 자바로 변환 시도 도움이 될 생각 : 이것은 내가 궁극적으로 달성하기 위해 노력하고 무엇인가 textviews을 추가

parameters_layout = new 
     RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 
    200); 
layout.setLayoutParams(parameters_layout); 

편집 2 내가 추가하는 시도 :

parameters_layout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
    parameters_layout.addRule(RelativeLayout.ALIGN_BOTTOM, RelativeLayout.TRUE); 
    layout.setGravity(Gravity.BOTTOM); 
    layout.setLayoutParams(parameters_layout); 

여전히 RelativeLayout의 공식 안드로이드 문서에 행운

+0

실제로 새보기 (및 레이아웃)의 기본값은 WRAP_CONTENT입니다.이 코드는 우리가 볼 수 있도록 더 많은 코드를 제공해야 함을 의미합니다. 어쩌면 당신은 또한 당신이 달성하려고하는 것에 대한 스케치를 보여 주어야합니까? –

+0

내 편집을 참조하십시오 – AndroidLove

답변

0

봐. 특히

http://developer.android.com/reference/android/widget/RelativeLayout.html

,

setMinimumWidth(int) 
setMinimumHeight(int) 

예 :

layout.setMinimumWidth(500); 
layout.setMinimumHeight(100); 

당신은 높이와 텍스트 뷰/글고 치기의 폭과 버튼을 설정하려면

(귀하의 예제처럼).

다음은 공식 Android 설명서의 API 참조입니다.

글고 : http://developer.android.com/reference/android/widget/EditText.html

setHeight(int) 
setMaxHeight(int) 
setMinHeight(int) 
setMaxWidth(int) 

버튼 : http://developer.android.com/reference/android/widget/Button.html

setHeight(int) 
setMinWidth(int) 

그냥 참조 모두가 공식 문서화를 참조하십시오. :)

+0

레이아웃을 위해이 작업을 시도했지만 여전히 행운이 없습니다 – AndroidLove

0

전체 코드 샘플을 제공하지 않았으므로 new RelativeLayout이 내 활동의 콘텐츠보기라고 가정합니다.

setContentView(layout); 

이 당신의 부모 뷰가 프레임 레이아웃을 의미합니다, 당신은 FrameLayout.LayoutParams을 작성해야합니다. 해당 params 유형은 많은 옵션을 제공하지 않으며 오직 gravity입니다.시도해 볼 수 있습니다 :

RelativeLayout layout = new RelativeLayout(this); 
int halfScreenHeight = //calculate from DisplayMetrics 
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(MATCH_PARENT, halfScreenHeight, Gravity.BOTTOM); 
setContentView(layout, params); 

...하지만 꽤 어색합니다. 나는 당신의 RelativeLayout의 위쪽 절반에 공란 인 View을 삽입하는 것이 더 쉽다고 생각합니다. 여전히 전체 화면이지만 더 이상 전체 화면으로 보이지 않습니다.

+0

나중에이 RelativeLayout을 WindowManager 객체에 추가하기 때문에 setContentView를 사용하지 않습니다. – AndroidLove

0

이미지에 표시되는 내용에 따라 모든 것을 다 커버하는 relativeLayout에 모든 것을 넣을 수 있으며 하단 뷰는 하단에 정렬됩니다.

다른 방법으로 창 하단에 중력이 "바닥"인 하단 부분 (원하는 레이아웃이 될 수 있음) 만 설정할 수 있습니다.

사실 저는 최근에 투명 배경이있는 대화 상자를 너무 오래 전에 만들지 않았습니까, 그래서 도움이 될 것입니다. here's the link. 내 이해에서, 활동과 매우 유사한 접근이 이루어질 수 있습니다.

+0

아직 행운이 없었습니다 (제 편집 참조). 나중에이 RelativeLayout을 WindowManager에 추가한다는 것을 포함하는 것이 중요하다고 생각합니다 (Serivce 클래스는 insy입니다). 나는 당신의 것과 비슷한 문제를 진행중인 액티비티 위에 놓기를 원하므로 SYSTEM_ALERT_WINDOW 권한으로 서비스와 WindowManager를 사용했지만 편집 할 수는 없습니다. 내가 여기에 게시, 아무도 그걸 도울 수 있었다 http://stackoverflow.com/questions/18424613/cannot-click-on-edittext-after-adding-it-to-windowmanager – AndroidLove

+0

좋아, 내 대답을 추가했습니다 그곳에. 여기에 다시 한번, 중력을 당신이 원하는 바대로 설정할 수 있습니다. 당신의 질문에 작성한 코드처럼 말입니다. –

+0

ok 고맙습니다 .. 다른 질문에 XML 파일을 분리하는 방법에 따라 수행 할 수 있다면 XML에있는 모든 것을 할 수 있고 java로 가져올 수 있기 때문에 걱정할 필요가 없습니다. 다시 한 번 감사드립니다. – AndroidLove

관련 문제