2012-06-01 3 views
0

4 개의 버튼을 같은 폭으로 연속으로 만들어야합니다. 선형 레이아웃과 가중치를 사용하여이를 수행하는 방법을 알고 있습니다. 그러나 그것은 저에게는 용인할만한 것이 아닙니다. 내 4 개의 버튼과 관련된 다른보기가 있으므로 상대 레이아웃 내부의 모든 작업을 수행하고 싶습니다. 가능한가?Android : 행에 동일한 너비의 버튼 4 개 생성 (상대 레이아웃)

+2

버튼을'LinearLayout'에 넣고'RelativeLayout'에'LinearLayout'을 넣으십시오. 또는 특정 'Button'과 관련된 상대편보기가 있다는 것을 의미합니까? – Squonk

+0

@MisterSquonk 예,보기는 특정 버튼을 기준으로합니다. 실제로, RelativeLayout 내부에 LinearLayout을 넣은 다음 각 Button을 자신의 RelativeLayout으로 랩핑 할 수 있습니다. 그러나 다소 이상한 솔루션이고 "layoutCeption"처럼 들릴 수도 있습니다. –

+2

전체 레이아웃에 대한 세부 정보를 추가해야 할 수도 있습니다. 그런 다음 더 완전한 제안을 제공 할 수 있습니다. LinearLayout없이 버튼을 동일한 길이로 만들려고하면 문제가 생길 것입니다. – you786

답변

1

버튼의 너비를 표준 크기로 설정하는 방법은 어떻습니까?

<Button 
    android:width="75dp" 
    ... /> 

추가 런타임에 디스플레이의 폭을 확인하는 방법은 다음과 같습니다

int width = getWindowManager().getDefaultDisplay().getWidth()/4; 
// Set this width to your buttons 
+2

문제는 전체 화면 너비가 각 안드로이드 장치에 따라 다르다는 것입니다. –

0

는 동일한 폭과 높이를 가지고 다른 사람을 말할 것이다보기 중 하나를 선택합니다. 뷰의 크기를 가져 오기 위해이 같은 것을 사용

private static void runJustBeforeBeingDrawn(final View view, final Runnable runnable) 
{ 
    final ViewTreeObserver vto = view.getViewTreeObserver(); 
    final OnPreDrawListener preDrawListener = new OnPreDrawListener() 
    { 
     @Override 
     public boolean onPreDraw() 
     { 
      Log.d(App.APPLICATION_TAG, CLASS_TAG + "onpredraw"); 
      runnable.run(); 
      final ViewTreeObserver vto = view.getViewTreeObserver(); 
      vto.removeOnPreDrawListener(this); 
      return true; 
     } 
    }; 
    vto.addOnPreDrawListener(preDrawListener); 
} 
0

나는 확실히 모르겠어요,하지만 난 유일한 방법은 당신이 무게 태그없이,이 작업을 수행 할 수 있다고 생각하는 것입니다 런타임/프로그래밍 방식으로 설정하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer name="numberOfButtons">4</integer> 
</resources> 

를 그리고, 당신의 어댑터/액티비티 클래스에서 다음과 같은 : 나는 다음처럼 integer.xml에 상수를 설정하여 이런 짓을 한

DisplayMetrics dm = new DisplayMetrics(); 
// dm holds your structure of resolution 
context.getWindowManager().getDefaultDisplay().getMetrics(dm); 

int width = dm.getWidth(); 
btn1.setWidth(width/getInteger(R.integer.numberOfButtons)); 
btn2.seTwidth(width/getInteger(R.integer.numberOfButtons)); 
btn3.seTwidth(width/getInteger(R.integer.numberOfButtons)); 
btn4.seTwidth(width/getInteger(R.integer.numberOfButtons)); 

희망이 어떤 식 으로든 당신을 도울 수 있기를 바랍니다.

+0

Yuriy에 의해 이전에 언급했듯이 각 안드로이드 장치는 자체 해상도/화면 크기를가집니다. 이 값은 "DisplayMetrics"클래스에서 얻을 수 있습니다. – mthama