2

我正在尝试开发一个 Android 布局,其中我有一个Imageand some text

所需布局

我希望图像为1 个屏幕高,并且在向下滚动时将显示其余内容。

我应该在 layout.xml 中设置什么值。所以图像正好(与设备无关)1 屏幕高?

为了使问题更清楚,使用 css 我可以使用以下代码轻松获得全高屏幕图像:

<html>
    <style>
    html, body {
        height: 100%;
    }

    .image {
        height: 100%;
        background-image: url(http://kolobee.com/images/stings/baelo-claudia.1ovl/ad2p/620x620.jpg);
        background-position: center;
    }
    </style>
    <body>
        <div class="image"></div>
        <h1>Title</h1>
        <p>More text</p>
    </body>
</html>
4

3 回答 3

2

您可以使用覆盖 ImageView 类的 onMeasure() 方法的自定义视图来实现此目的。下面是自定义视图,以及与您问题中的图像匹配的布局。

(注意,此方法没有考虑 ActionBar 占用的空间量。如果您使用的是自定义视图的测量值,则需要进一步调整。)

package com.example.testview;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.WindowManager;
import android.widget.ImageView;

public class FullScreenImageView extends ImageView {

    private DisplayMetrics mMetrics;

    public FullScreenImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mMetrics = new DisplayMetrics();
    }

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        WindowManager windowManager = (WindowManager) ((Activity)getContext()).getSystemService(Context.WINDOW_SERVICE);
        windowManager.getDefaultDisplay().getMetrics(mMetrics);
        setMeasuredDimension(mMetrics.widthPixels, mMetrics.heightPixels);
    }
}

布局 xml 将类似于:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

       <com.example.testview.FullScreenImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"                
            android:src="@drawable/ic_launcher" />

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Title" />

        <Text
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Text" />
    </LinearLayout>

</ScrollView>
于 2013-07-12T18:00:42.727 回答
1

您可以使用以下方法动态添加图像视图并将其高度设置为等于屏幕高度:如果您想要以像素为单位的显示尺寸,您可以使用 getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如果您不在 Activity 中,您可以通过 WINDOW_SERVICE 获得默认显示:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated 

但是为此,您必须从 java 类中添加图像视图,如下所示:-

ImageView iv = new ImageView();
parentLayout.Add(iv);
于 2013-07-12T17:05:34.137 回答
-2
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<ScrollView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <ImageView 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
        <TextView 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
</ScrollView>

于 2013-07-12T16:46:16.990 回答