Aller au contenu

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.

Modifié par gisclace
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...