我有这个想要裁剪的ImageView占用不超过屏幕尺寸的1/3。我使用layout_height =" 0dp"使用了以下布局和layout_weight在需要的地方,但ImageView的高度应该超出预期。如果我用LinearLayout替换ScrollView,一切都应该到位。我的猜测是因为ScrollView具有无限高度...我怎样才能强制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>
以下是它的样子:
答案 0 :(得分:1)
根据文档,Scrollview
具有“无限高度”:
http://developer.android.com/reference/android/widget/ScrollView.html
所以,“1/3”高度确实没有意义 - LinearLayout将简单地占用Scrollview中所需/想要/可以的任何高度。
如果您希望View为屏幕大小的1/3,但您还希望它滚动,则使用DisplayMetrics
计算屏幕高度,然后相应地布局元素。 (同样,如果您希望“顶部”部分为屏幕高度的2/3,请执行相同的操作。)
见这篇文章:
答案 1 :(得分:0)
在ImageView中,试试这个
android:layout_gravity="center_horizontal"
android:scaleType="centerInside"