Jump to content

Texte autour d'une image


gisclace

Recommended Posts

Bonjour à tous,

Je me retrouve face à un problème de mise en forme que je n'arrive pas à résoudre.

Je voudrais avoir une image dans un le coin haut gauche et le texte qui entoure celle-ci (dito l'image suivante : https://camo.githubusercontent.com/6fc51fa500c9cb0039d6022fbdac8f6a34046324/687474703a2f2f692e696d6775722e636f6d2f69796e7446627a2e706e67 )

Cette image est issue d'un github (https://github.com/deano2390/FlowTextView), je l'ai suivis à la lettre et au final je ne m'en sors pas.

 

J'ai aussi suivi d'autres exemples (http://gmariotti.blogspot.in/2014/03/snippet-align-textview-around-image.html par exemple), mais même s'ils sont plus simples à comprendre, au final cela ne produit rien chez moi (je dois oublier une étape je pense mais je ne sais laquelle)

 

Je vous détails ce que j'ai fait (je code sous android studio) :

 

un layout nomé foobar :

<?xml version="1.0" encoding="UTF-8"?>
<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" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:contentDescription="@string/app_name" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_centerHorizontal="true"
        android:gravity="left|right" />

</RelativeLayout>

Un classe nomée mainactivity :

package gisclace.tube;

        import android.text.Layout;
        import android.text.SpannableString;
        import android.text.style.LeadingMarginSpan.LeadingMarginSpan2;
        import android.widget.ImageView;
        import android.widget.TextView;
        import android.app.Activity;
        import android.content.Context;
        import android.graphics.Canvas;
        import android.graphics.Paint;
        import android.graphics.drawable.Drawable;
        import android.os.Bundle;

public class MainActivity extends Activity {
    Context c;

    @SuppressWarnings("deprecation")
    @[member="override"]
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.foobar);

        Drawable dIcon = getResources().getDrawable(R.drawable.logo);
        int leftMargin = dIcon.getIntrinsicWidth()+30;
        ImageView icon = (ImageView) findViewById(R.id.imageView1);
        icon.setBackgroundDrawable(dIcon);
        String values = getString(R.string.text_sample);
        SpannableString ss = new SpannableString(values);
        ss.setSpan(new Margin(6, leftMargin), 0, ss.length(), 0);

        TextView messageView = (TextView) findViewById(R.id.textView1);
        messageView.setText(ss);
    }
    class Margin implements LeadingMarginSpan2
    {
        private int margin;
        private int lines;

        Margin(int lines, int margin)
        {
            this.margin = margin;
            this.lines = lines;
        }

        @[member="override"]
        public void drawLeadingMargin(Canvas arg0, Paint arg1, int arg2,
                                      int arg3, int arg4, int arg5, int arg6, CharSequence arg7,
                                      int arg8, int arg9, boolean arg10, Layout arg11)
        {
// TODO Auto-generated method stub
        }

        @[member="override"]
        public int getLeadingMargin(boolean arg0)
        {
// TODO Auto-generated method stub
            if (arg0) {
/*
* This indentation is applied to the number of rows returned
* getLeadingMarginLineCount ()
*/
                return margin;
            }
            else
            {
// Offset for all other Layout layout ) { }
/*
* Returns * the number of rows which should be applied * indent
* returned by getLeadingMargin (true) Note:* Indent only
* applies to N lines of the first paragraph.
*/
                return 0;
            }
        }

        @[member="override"]
        public int getLeadingMarginLineCount()
        {
            // TODO Auto-generated method stub
            return lines;
        }

    }
}


Et le texte dans strings.

 

Avec cette méthode, je n'ai ni texte ni image ni texte qui apparait dans la page foobar.

 

 

L'un de vous aurait-il une piste (ou un bon tuto bien détaillé (et fr tant qu'à faire ^_^)) pour que je m'en sorte?

 

Merci d'avance.

Edited by gisclace
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...