2017-03-18 13 views
0

ので、私は、このXMLコードだ:高さを相対幅に合わせるにはどうすればいいですか?

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:orientation="horizontal" 
      android:layout_weight="1"> 

      <ImageView 
       android:layout_width="0dp" 
       android:layout_height="200dp" 
       android:layout_weight="1" 
       android:background="@drawable/profilbildfrau" 
       android:id="@+id/bild0" 
       > 

      </ImageView> 

      <ImageView 
       android:layout_width="0dp" 
       android:layout_height="200dp" 
       android:layout_weight="1" 
       android:background="@drawable/profilbildfrau" 
       android:id="@+id/bild1"> 

      </ImageView> 

      <ImageView 
       android:layout_width="0dp" 
       android:layout_height="200dp" 
       android:layout_weight="1" 
       android:background="@drawable/profilbildfrau" 
       android:id="@+id/bild2"> 

      </ImageView> 

     </LinearLayout> (...) 

をそして、これは私のJavaCodeです:

ImageView beispiel; 
    ImageView[] profilbilder = new ImageView[21]; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_hauptmenue); 

     beispiel = (ImageView)findViewById(R.id.bild0); 
     int weite = beispiel.getWidth(); 

     profilbilder[0] = (ImageView)findViewById(R.id.bild0); 
     profilbilder[1] = (ImageView)findViewById(R.id.bild1); 
     profilbilder[2] = (ImageView)findViewById(R.id.bild2); 
     profilbilder[3] = (ImageView)findViewById(R.id.bild3); 
     profilbilder[4] = (ImageView)findViewById(R.id.bild4); 
     profilbilder[5] = (ImageView)findViewById(R.id.bild5); 
     profilbilder[6] = (ImageView)findViewById(R.id.bild6); 
     profilbilder[7] = (ImageView)findViewById(R.id.bild7); 
     profilbilder[8] = (ImageView)findViewById(R.id.bild8); 
     profilbilder[9] = (ImageView)findViewById(R.id.bild9); 
     profilbilder[10] = (ImageView)findViewById(R.id.bild10); 
     profilbilder[11] = (ImageView)findViewById(R.id.bild11); 
     profilbilder[12] = (ImageView)findViewById(R.id.bild12); 
     profilbilder[13] = (ImageView)findViewById(R.id.bild13); 
     profilbilder[14] = (ImageView)findViewById(R.id.bild14); 
     profilbilder[15] = (ImageView)findViewById(R.id.bild15); 
     profilbilder[16] = (ImageView)findViewById(R.id.bild16); 
     profilbilder[17] = (ImageView)findViewById(R.id.bild17); 
     profilbilder[18] = (ImageView)findViewById(R.id.bild18); 
     profilbilder[19] = (ImageView)findViewById(R.id.bild19); 
     profilbilder[20] = (ImageView)findViewById(R.id.bild20); 



     for(int i = 0; i < 20; i++){ 
      profilbilder[i].setMaxHeight(weite); 
      //ImageView bild = profilbilder[i]; 
      //bild.getLayoutParams().height = weite; 
      profilbilder[i].setMinimumHeight(weite); 
      profilbilder[i].requestLayout(); 
     } 
    } 

私の目標は、それが画面にフィットその正しい幅を持っていた後の画像の1の幅を取得することです各ピクチャの高さをピクチャの幅に設定します。いくつかのコードを試しましたが、これは最近のものですが、高さが幅に一致しません。私はここで何が欠けていますか?

はまだ onCreateビューがサイズにされていないで、事前に ジュリアン

答えて

1

をありがとう、通常幅が0ビューにOnGlobalLayoutListenerを追加し、onGlobalLayoutImageViewの高さと幅を取得返されます。

beispiel.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
       beispiel.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
      } else { 
       beispiel.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
      } 

      int width = beispiel.getWidth(); 
      for(int i = 0; i <= 20; i++){ 
       // make the height and width of each ImageView equal to width of beispiel 
       profilbilder[i].setLayoutParams(new LinearLayout.LayoutParams(width, width)); 
      } 
     } 
    }); 
+0

が答えてくれてありがとう:そして、あなたは新しいLayoutParamsImageViewごとに設定することができます!私は何のエラーもありませんが、私は幅=高さを作るために何かを変えなければなりませんか? – user7342339

+0

編集を確認してください。 'ImageView'ごとに新しい' LayoutParams'を設定し、幅と高さの両方の値を 'beispiel'の幅に設定する必要があります。 –

+0

ええ、それは働いて、ありがとう! – user7342339

関連する問題