0

我有這個ImageView我想裁剪佔用不超過1/3的屏幕尺寸。在需要的地方,我使用了layout_height =「0dp」和layout_weight,但是ImageView保持了更高的高度。如果我用LinearLayout替換ScrollView,所有東西都應該放在原處。我的猜測是這是因爲ScrollView具有無限高度......我如何仍然強制ScrollView尊重其父級的實際佈局高度並實現我想要的。將ImageView設置爲ScrollView中屏幕高度的一部分

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
> 
    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:fillViewport="true" 
    > 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" 
     > 
      <ImageView 
       android:id="@+id/imageview" 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" 
       android:src="@drawable/image" 
       android:scaleType="centerCrop" 
      /> 
      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="2" 
       android:orientation="vertical" 
      > 
       <TextView 
        android:id="@+id/textview1" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="16dp" 
        android:layout_marginLeft="16dp" 
        android:textAppearance="@style/TextAppearance.AppCompat.Headline" 
        android:text="Text1" 
       /> 
       <TextView 
        android:id="@+id/textview2" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="4dp" 
        android:layout_marginLeft="16dp" 
        android:layout_marginRight="16dp" 
        android:textAppearance="@style/TextAppearance.AppCompat.Medium" 
        android:singleLine="true" 
        android:ellipsize="end" 
        android:marqueeRepeatLimit="marquee_forever" 
        android:text="Text2" 
       /> 
       <TextView 
        android:id="@+id/textview3" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="4dp" 
        android:layout_marginLeft="16dp" 
        android:layout_marginRight="16dp" 
        android:textAppearance="@style/TextAppearance.AppCompat.Medium" 
        android:singleLine="true" 
        android:ellipsize="end" 
        android:marqueeRepeatLimit="marquee_forever" 
        android:text="Text3" 
       /> 
       <TextView 
        android:id="@+id/textview4" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="4dp" 
        android:layout_marginBottom="4dp" 
        android:layout_marginLeft="16dp" 
        android:layout_marginRight="16dp" 
        android:textAppearance="@style/TextAppearance.AppCompat.Body2" 
        android:singleLine="false" 
        android:text="Text4" 
       /> 
      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

下面是它的樣子:

Layout Final

回答

1

一個Scrollview有根據文檔 「無限高」:

http://developer.android.com/reference/android/widget/ScrollView.html

所以, 「1/3」高度真的沒有意義 - LinearLayout將在Scrollview中簡單佔據它需要/想要的任何高度。

如果您希望視圖爲屏幕大小的1/3,但您也希望它滾動,請使用DisplayMetrics來計算屏幕的高度,然後相應地設置佈局元素。 (同樣,如果你想在「頂」部分是屏幕高度的2/3,這樣做。)

看到這個職位:

How to get screen display metrics in application class

0

內,您的ImageView的,試試這個

android:layout_gravity="center_horizontal" 
android:scaleType="centerInside" 
相關問題