如何定位ImageView而不占用整个屏幕?

时间:2017-02-12 04:53:22

标签: android android-layout relativelayout

我正在尝试编写我的第一个Android应用程序之一。我正在尝试将图片放在图片下方 ,但图片占据了屏幕的大部分 ,其中一个textview s应该位于下方它没有显示。我使用的是RelativeLayout

这是我的代码段。

<RelativeLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.jsk.myapp.MainActivity">

<TextView
    android:id="@+id/t1"
    android:layout_width="wrap_content"
    android:text="My App"
    android:layout_centerHorizontal="true"
    android:textSize="30sp"
    android:layout_alignParentTop="true"
    android:layout_height="wrap_content" />

<ImageView
    android:scaleType="centerCrop"
    android:id="@+id/img"
    android:layout_below="@id/t1"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:src="@drawable/i1"
    />
<TextView
    android:id="@+id/t2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/img"
    android:textSize="24sp"
    android:text="Description"/>

</RelativeLayout>

我也尝试更改imageview的缩放类型,但它不起作用。仅当我 明确指定图像的宽度和高度参数 时,文本才会显示在图像下方。

我可以在此代码中进行哪些更改以获得所需的输出?

4 个答案:

答案 0 :(得分:1)

如果您添加了想要实现的内容的粗略图表,您的问题可以得到更好的回答。根据我的理解,通过查看您的代码,您似乎尝试在顶部和底部(每个一个)添加2 TextView,然后将ImageView夹在中间。< / p>

首先,添加2 TextView&#39}。将其设置为android:layout_alignParentTop = trueandroid:layout_alignParentBottom = true。然后添加ImageView。在ImageView中,您可以设置android:layout_height = "wrap_content",然后设置android:layout_below=<id of the top text view> 以及 android:layout_above = <id of the bottom text view>

这样的事情:

<RelativeLayout
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.jsk.myapp.MainActivity">

    <TextView
        android:id="@+id/t1"
        android:layout_width="wrap_content"
        android:text="My App"
        android:layout_centerHorizontal="true"
        android:textSize="30sp"
        android:layout_alignParentTop="true"
        android:layout_height="wrap_content" />

   <TextView
        android:id="@+id/t2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:textSize="24sp"
        android:text="Description"/>`

    <ImageView
        android:scaleType="centerCrop"
        android:id="@+id/img"
        android:layout_below="@id/t1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/i1"
        android:layout_above="@id/t2"
        />

</RelativeLayout>

答案 1 :(得分:0)

如果您使用Map<String, List<Settlement>> map = list.stream() .collect(Collectors.groupingBy(Settlement::getSmartNo)); System.out.println(map.getValues()); 表示wrap_content的身高,如果ImageView的实际图片足够大,则肯定会占用整个空间。

在这种情况下,您必须明确提及ImageView的确切高度,以便显示以下文字。

要解决此问题,您要做的是更改图像本身的实际高度。如果你这样做,图像将完全适合自己,但需要较少的高度,然后文本应该出现。

所以你有两个选择, 1)在您的布局中修复图像高度,或者 2)修复实际图像高度,使其更适合您的用例

我希望这能回答你的问题。

答案 2 :(得分:0)

您需要根据屏幕尺寸指定 ImageView 的尺寸

使用 PercentRelativeLayout

我的compileSdkVersion是24,所以我在我的应用中使用compile 'com.android.support:percent:24.0.0':gradle依赖项

示例:

<android.support.percent.PercentRelativeLayout
    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">

    <TextView
        android:id="@+id/t1"
        android:layout_width="wrap_content"
        android:text="My App"
        android:layout_centerHorizontal="true"
        android:textSize="30sp"
        android:layout_alignParentTop="true"
        android:layout_height="wrap_content" />

    <ImageView
        android:scaleType="centerCrop"
        android:id="@+id/img"
        android:layout_below="@id/t1"
        android:layout_width="match_parent"
        app:layout_heightPercent="50%" <---------- here its taking 50% of screen height
        android:src="@drawable/myImageName"
        />
    <TextView
        android:id="@+id/t2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/img"
        android:textSize="24sp"
        android:text="Description"/>

</android.support.percent.PercentRelativeLayout>

如果您使用LinearLayout,请转到layout_weight属性

答案 3 :(得分:0)

使t2 alignParentBottom为true 和 让img查看layout_above t2

<RelativeLayout
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.jsk.myapp.MainActivity">

<TextView
    android:id="@+id/t1"
    android:layout_width="wrap_content"
    android:text="My App"
    android:layout_centerHorizontal="true"
    android:textSize="30sp"
    android:layout_alignParentTop="true"
    android:layout_height="wrap_content" />

<ImageView
    android:scaleType="centerCrop"
    android:id="@+id/img"
    android:layout_below="@id/t1"
    android:layout_above="@+id/t2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/i1"
/>
<TextView
    android:id="@id/t2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:textSize="24sp"
    android:text="Description"/>

</RelativeLayout>