我在RelativeLayout中使用了ImageView和Textview。
我期望什么:
Xml文件
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:minHeight="250dp"
android:layout_above="@+id/linear"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/facebookshare">
</ImageView>
<TextView
android:layout_alignParentBottom="true"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
输出:(图像视图高度变为0)
预期:(图像视图高度应> 250 dp // minHeight = 250dp)
当内容较小时,Imageview应该像填充整个屏幕一样
有人可以帮我吗!
答案 0 :(得分:1)
如果您使用的是ConstraintLayout
,请使用以下代码,否则请告诉我。需要使用NestedScrollView
:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintHeight_min="250dp"
android:src="@drawable/ic_launcher_background"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/txt" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="text"
app:layout_constraintTop_toBottomOf="@id/img"
app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
答案 1 :(得分:1)
尝试这种方式
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:contentDescription="@string/app_name"
android:minHeight="250dp"
android:layout_above="@+id/tvText"
android:src="@drawable/kid" />
<TextView
android:id="@+id/tvText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/colorAccent"
android:text="@string/large_text" />
</RelativeLayout>
输出
大文本时
小文本时
更新
<string name="large_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar nec justo id bibendum.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar nec justo id bibendum.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar nec justo id bibendum.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar nec justo id bibendum.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pulvinar nec justo id bibendum.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis bibendum mattis risus eget pulvinar. Praesent commodo erat enim, id congue sem tristique vitae. Proin vitae accumsan justo, ut imperdiet tellus. Mauris neque nibh, hendrerit id tortor vel, congue sagittis odio. Morbi elementum lobortis maximus. Etiam sit amet porttitor massa. Fusce sed magna quis arcu tincidunt finibus vitae id erat. Pellentesque massa mi, imperdiet eget accums</string> <!-- TODO: Remove or change this placeholder text -->
<string name="small_text">Hello World Lorem ipsum dolor sit amet, consectetur adipiscing elit
Hello World Lorem ipsum dolor sit amet, consectetur adipiscing elit
Hello World Lorem ipsum dolor sit amet, consectetur adipiscing elit</string>
答案 2 :(得分:0)
这只是一个黑客。
您可以将minHeight
赋予ImageView
,而不是将maxLines
赋予TextView
。您也可以在末尾放大TextView
的大小。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scaleType="centerCrop"
android:src="@drawable/img_cat">
</ImageView>
<TextView
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="5"
android:scrollbars="vertical"
android:textSize="40sp"
tools:text="asdlfkasdfkasdf"
/>
</LinearLayout>
答案 3 :(得分:0)
minHeight
中的 ImageView
无效,仅因为您将ImageView
的高度设置为match_parent
。因此,它获得了足够的空间(超过250dp的空间可以渲染并忽略minHeight
)。
只需将android:layout_height="match_parent"
更改为android:layout_height="wrap_content"
<ImageView
android:layout_above="@+id/linear"
android:minHeight="250dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/facebookshare">
工作样本布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="sdvdsibvdsv"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/facebookshare"
app:layout_constraintBottom_toTopOf="@+id/linear"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_min="250dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
布局设计视图可能会向您显示错误的UI呈现。只是运行它。它将起作用。
答案 4 :(得分:0)
将ImageView封装在另一个布局中:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_above="@+id/linear">
<ImageView
android:minHeight="250dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/what"/>
</LinearLayout>
<TextView
android:layout_alignParentBottom="true"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
答案 5 :(得分:-1)
尝试一下,效果很好。使用layout_weight。为图像设置maxWeight,为文本设置剩余的权重。当文本长度增加时,它将减小图像高度。这取决于您提供的文字的长度。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="3">
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
tools:srcCompat="@tools:sample/backgrounds/scenic"/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:text="Hhhjkahsgkjhasd jasdhfkjsd hfdjkshfuernf jsdhfsudf jdhfkjdshf jhdfjshf kjdhf kjdhf kajhdf jhsgdfs jd sdgfjkgf sjdgfs jfshdg "/>
</LinearLayout>