2010-06-11 4 views
14

Her öğenin bir başlığı, açıklaması ve resmi olduğu bir web sitesinden gezinme yüklüyorum. Aynı eksen boyunca ortalanmış tüm başlıklar ve açıklamalara sahip olmak istiyorum.ImageView öğesinin maksimum genişliğini, sayfanın üst kısmının genişliğinde bir yüzde olarak ayarla

ListView'deki her öğe için aşağıdaki düzeni kullanıyorum. Görüntüler, uzun oldukları sürece yarı geniş olduğunda iyi çalışır, ancak daha genişse, metin resmin altına girer.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal"> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1"> 
      <TextView 
       android:layout_height="wrap_content" 
       android:textSize="10pt" 
       android:id="@+id/title" 
       android:gravity="center_horizontal" 
       android:layout_width="fill_parent" /> 
      <TextView 
       android:layout_height="wrap_content" 
       android:id="@+id/description" 
       android:layout_width="fill_parent" 
       android:gravity="center_horizontal" /> 
     </LinearLayout> 
     <View 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent" 
      android:layout_weight="3" /> 
    </LinearLayout> 
    <ImageView 
     android:id="@+id/icon" 
     android:adjustViewBounds="true" 
     android:layout_width="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_height="wrap_content" /> 
</RelativeLayout> 

o RelativeLayout genişliği veya daha az% 25'ine kalmak görüntüyü zorlamak mümkün mü?

cevap

15

Bu XML'de yapılamaz. Koddaki boyutu belirtmeniz gerekir.

: I aktivitesi onCreate() in bunu [düzenlenmiştir. Ilave alma, şamandıra gösterim]

import android.widget.LinearLayout.LayoutParams; 
... 
obj.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
            LayoutParams.WRAP_CONTENT, 
            0.25f)); 

Bu kullanmanın, ebeveynin yüksekliğinin% 100 ancak ana genişliği% 25 anlamına gelir .

+0

Bunun LinearLayout.LayoutParams olması ve 0.25'in çalışmak için 0.25 olması gerektiğini düşünüyorum. – thomas88wp

+0

@ thomas88wp Açıkçası bu kod LinearLayout.LayoutParams'ı içe aktarmayı gerektirir. Ayrıca, ondalık noktadan dolayı 0.25 ve 0.25f Java'da aynı şeydir. – Emmanuel

+4

noktasında pişman olduğum için üzgünüm, ama java '0.25' bir çift literal ve '0.25f' bir kayan literal. Eğer bir parametre bir şamandıra gerektiriyorsa (bu durumda olduğu gibi), eğer bir çifte aktarırsanız derlemeyecektir (diğer bir deyişle, şamandıra bir çifte dolaylı olarak dökülebilir, ancak tam tersi değil). Göstermek için, public void foo (float bar) derlemeyi deneyin {foo (0.5); } '- 'f' eklenene kadar çalışmaz. – thomas88wp