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" 
相关问题