SORU
18 Mart 2011, Cuma


Android İmageView boyutu kaynak görüntü ile ölçeklendirme değil

Bir LinearLayout içinde birkaç İmageViews var. En Boy oranı ederken, dikey olarak LinearLayout içine uydurma korumak İmageViews küçültün ihtiyacım var. Yatay olarak, ben sadece onları birbirine bitişik olması gerekir.

Bu İmageViews için geniş, ama çok uzun boylu değil, bir LinearLayout var - ki ağırlıklı Düzenleri yuvası olan bu basit bir test yatağı yaptım

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
    <LinearLayout android:id="@ id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="5">
        <LinearLayout android:id="@ id/linearLayout3" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1">
            <ImageView android:id="@ id/imageView1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/test_image" android:scaleType="fitStart"></ImageView>
            <ImageView android:id="@ id/imageView2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/test_image" android:scaleType="fitStart"></ImageView>
        </LinearLayout>
        <LinearLayout android:id="@ id/linearLayout4" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1"></LinearLayout>
    </LinearLayout>
    <LinearLayout android:id="@ id/linearLayout2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"></LinearLayout>
</LinearLayout>

(Eclipse düzenleme editörü görüntüleri dikey olarak kesilmiş ve ölçekli tüm - ama o sevmeyi öğreniyoruz, bu kişisel özelliklerinden sadece biri)

Donanım üzerinde çalıştırmak görüntüleri doğru yükseklik ederken boy oranını koruyarak ölçeklidir. Benim sorunum yanyana değil. Her İmageView yüksekliği doğru LinearLayout yüksekliği ile eşleşir. Her İmageView genişliği ölçeklenmemiş görüntü küçülttüm gerçek görüntüler onların İmageViews sol tarafında görünen genişliği. Bu nedenle, görüntüler arasında büyük bir uçurum alıyorum.

İdeal olarak, eğer bu mümkün değilse, özel bir görünüm kullanarak en iyi çözüm olabilir anlıyorum ama XML ile bu yönetmek istiyorum.

Genişliği yüksekliğe bağlı olarak Ölçekleme tarafından gerekli büyüklükte görüntü görünümleri oluşturun diye onMeasure geçersiz kılan (genişletir İmageView) İconView bir sınıf oluşturmaya çalıştım. Ama parentWidth ve parentHeight işlev geçirildi ekran boyutları ve LinearLayout kabın değil.

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
  int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
  // Calculations followed by calls to setMeasuredDimension, setLayoutParams
  super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

Sorularım bu yüzden

1) bir şekilde XML ihtiyacım var ne yapmak değiştirebilir miyim?

2) Nasıl benim özel yaptığım sınıf özel görüntüler için gerekli genişliğini hesaplamak çok LinearLayout yüksekliği?

Eğer bu okumak için idare ettik teşekkürler. Eğer bir çözüm yönünde bana gelin eğer daha teşekkürler!

CEVAP
18 Mart 2011, Cuma


Ne İmageViews android:layout_height="fill_parent" kullanmak için değiştirme hakkında?

Edit- bana biraz zaman aldı, fakat kaynağı bakıyor bana adjustViewBounds belirlemekte yardımcı oldu. Senin İmageViews android:adjustViewBounds="true" ekleyerek denemek isteyebilirsiniz. Şaşırtıcı bir şekilde, bu varsayılan değeri Yanlış.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Glyn Dewis

    Glyn Dewis

    25 AĞUSTOS 2007
  • ICON

    ICON

    19 EKİM 2011
  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005