web-dev-qa-db-fra.com

Faire apparaître l'image sur la moitié de l'écran

J'ai du mal à faire apparaître ma vue d'image sur la moitié de l'écran. Quelqu'un peut-il m'aider? voici mon fichier xml. Il devrait occuper la moitié de la taille de l'écran et la disposition linéaire avec la vue de texte devrait être en bas de la vue d'image.

xmlns:tools="http://schemas.Android.com/tools"

Android:layout_width="fill_parent"

Android:layout_height="fill_parent"

Android:background="@drawable/fond" >

<RelativeLayout

    Android:layout_width="fill_parent"

    Android:layout_height="fill_parent"

    Android:layout_alignParentLeft="true"

    Android:layout_below="@+id/relativeLayout1" >

    <RelativeLayout

        Android:layout_width="fill_parent"

        Android:layout_height="fill_parent"

        Android:layout_alignParentLeft="true" >

        <WebView

            Android:id="@+id/webcontent"

            Android:layout_width="match_parent"

            Android:layout_height="wrap_content"

            Android:layout_alignParentLeft="true"

            Android:layout_alignParentTop="true"

            Android:layout_marginTop="151dp" />

    </RelativeLayout>

    <ImageView

        Android:id="@+id/image_actualitedetails"

        Android:layout_width="fill_parent"

        Android:layout_height="fill_parent"

        Android:layout_alignParentTop="true"

        Android:layout_centerHorizontal="true"

        Android:src="@drawable/six_yamaha" />

    <LinearLayout

        Android:id="@+id/linearvideo"

        Android:layout_width="fill_parent"

        Android:layout_height="65dp"

        Android:layout_alignBottom="@+id/image_actualitedetails"

        Android:layout_alignParentLeft="true"

        Android:background="#88FFFFFF"

        Android:gravity="center"

        Android:paddingLeft="@dimen/fourdp"

        Android:paddingRight="@dimen/fourdp" >


        <TextView

            Android:id="@+id/text_actualites"

            Android:layout_width="wrap_content"

            Android:layout_height="wrap_content"

            Android:text="TextView"

            Android:textColor="@color/tabDark"

            Android:textStyle="bold" />

    </LinearLayout>


</RelativeLayout>

<RelativeLayout

    Android:id="@+id/relativeLayout1"

    Android:layout_width="fill_parent"

    Android:layout_height="75dp"

    Android:layout_alignParentLeft="true"

    Android:layout_alignParentTop="true"

    Android:background="@drawable/header" >

    <Button

        Android:id="@+id/boutton_retour"

        Android:layout_width="wrap_content"

        Android:layout_height="wrap_content"

        Android:layout_alignParentLeft="true"

        Android:layout_centerVertical="true"

        Android:layout_marginLeft="14dp"

        Android:background="@drawable/back" />

</RelativeLayout>
17
Dimitri

Utilisez LinearyLayout pour encapsuler votre ImageView et une autre vue invisible, et définissez layout_weight à la fois à 0,5, puis ImageView devrait être la moitié de la taille.

Voici un exemple pour vous montrer comment définir l'image à la moitié de la taille de l'écran

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
              Android:orientation="vertical"
              Android:layout_width="match_parent"
              Android:layout_height="match_parent">
    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="0.5"
        Android:background="#ff0000"
        >
        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:src="@drawable/your_image"
            Android:adjustViewBounds="true"
            />
    </RelativeLayout>
    <View
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="0.5"
        Android:background="#00ff00"
        />
</LinearLayout>

Et voici le résultat

enter image description here

Si vous souhaitez placer votre image au centre de l'écran, vous pouvez utiliser la même idée et définir le poids approprié pour atteindre votre objectif. Bonne chance!

44
zTrix

Juste si quelqu'un veut une version paysage, c'est presque la même chose :)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="horizontal"
    Android:baselineAligned="true"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <RelativeLayout
        Android:layout_width="0dp"
        Android:layout_height="match_parent"
        Android:layout_weight="0.5"
        Android:background="#ff0000" >

        <ImageView
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:src="@drawable/adele" />
    </RelativeLayout>
    <RelativeLayout
        Android:layout_width="0dp"
        Android:layout_height="match_parent"
        Android:layout_weight="0.5"
        Android:background="#00ff00" />
</LinearLayout>
4
Javier

Vous devez d'abord obtenir les dimensions d'affichage lors de l'exécution

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
windowWidth = size.x;
windowHeight = size.y;

Ensuite, vous pouvez continuer et définir vos paramètres de hauteur et de largeur imageView à la moitié de ces valeurs

int orgWidth = yourImageView.getDrawable().getIntrinsicWidth();
int orgHeight = yourImageView.getDrawable().getIntrinsicHeight();



//Use RelativeLayout.LayoutParams if your parent is a RelativeLayout
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
windowHeight / 2, windowWidth / 2);
yourImageView.setLayoutParams(params);
yourImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
4
Jade Byfield

Vous devez placer votre image dans un LinearLayout avec alignement horizontal, afin que vous puissiez utiliser

Android:weight = 0.5// this attribute for the image view will force the image to fill half  of the screen, counting of course with the linear layout as the top parent layout(filling the hole window)
0
Daniel Conde Marin