2013-07-18 5 views
0

Im 화면에 표시해야하는 이미지 수에 따라 최대 1-4 개의 이미지 뷰를 만들어야하는 Android 앱을 만듭니다. 작은 코드를 작성했지만 화면을 4 개의 이미지 뷰로 균등하게 나누지 않는 것 같습니다. 내 2 위는 2 위보다 약간 크다. 다음은 .. 내 코드가 난 정말 문제가런타임시 이미지 뷰를 동적으로 만드는 방법은 무엇입니까?

private void CreateScreen() 
{ 
    int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); 
    int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 

    int matrixN = 2; 

    int maxWForEachScreen = screenWidth/matrixN; 
    int maxHForEachScreen = screenHeight/matrixN; 
    RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayoutFullScreen); 

    ImageView imgView1 = new ImageView(LiveViewer.this); 
    ImageView imgView2 = new ImageView(LiveViewer.this); 
    ImageView imgView3 = new ImageView(LiveViewer.this); 
    ImageView imgView4 = new ImageView(LiveViewer.this); 

    int size = 3; 

    if(size >= 3 && size <= 4) 
    { 
     imgView1.setImageResource(R.drawable.icon); 
     imgView2.setImageResource(R.drawable.icon); 
     imgView3.setImageResource(R.drawable.icon); 
     imgView4.setImageResource(R.drawable.icon); 

     RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(100, 100); 
     RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(100, 100); 
     RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(100, 100); 
     RelativeLayout.LayoutParams params4 = new RelativeLayout.LayoutParams(100, 100); 

     params1.height = maxHForEachScreen/2; 
     params1.width = maxWForEachScreen/2; 

     params2.height = maxHForEachScreen/2; 
     params2.width = maxWForEachScreen/2; 

     params3.height = maxHForEachScreen/2; 
     params3.width = maxWForEachScreen/2; 

     params4.height = maxHForEachScreen/2; 
     params4.width = maxWForEachScreen/2; 

     params1.setMargins(0, 0, 0, 0); 
     params2.setMargins(maxWForEachScreen/2, 0, 0, 0); 
     params3.setMargins(0, maxHForEachScreen/2, 0, 0); 
     params4.setMargins(maxWForEachScreen/2, maxHForEachScreen/2, 0, 0); 

     relativeLayout.addView(imgView1, params1); 
     relativeLayout.addView(imgView2, params2); 
     relativeLayout.addView(imgView3, params3); 
     relativeLayout.addView(imgView4, params4);  
    } 
} 
+0

테이블 레이아웃 또는 격자 레이아웃을 사용해보십시오. – Tugrul

+0

getHeight() 및 getWidth() 대신'getSize (Point)'를 사용하십시오. 그들은 더 이상 사용되지 않습니다. 'maxWForEachScreen'과'maxHForEachScreen'에 어떤 정수 값을 구합니까? – Vikram

+0

@Vikram 좀 더 자세하게 설명해 주시겠습니까? –

답변

0

당신은 뷰의 수와 동일한 parentLayout의 weightsum을 설정할 수 있습니다 무엇인지 생각하지 못할 것입니다 그리고 모든보기의 무게로 1을 설정 ...이 각을 만들 것입니다 보기가 균등 한 공간을 차지합니다 ..

+0

어떻게하면됩니까? –

관련 문제