2013-07-09 20 views
17

Nella mia applicazione, voglio impostare le bolle in una vista testuale, nella vista del testo aggiungo il setBackgroundResource() come si può vedere nel codice.Come aggiungere le bolle a textview android?

Con questo codice sto ottenendo un'immagine come questa:

enter image description here

voglio un'immagine forma di bolla in questo modo:

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 
    <solid android:color="#EDF5E4" /> 
    <corners android:bottomLeftRadius="@dimen/corner_radius" 
    android:bottomRightRadius="@dimen/corner_radius" 
    android:topLeftRadius="@dimen/corner_radius" 
    id:topRightRadius="@dimen/corner_radius" /> 

Per favore dimmi come fare th è nel mio XML setBackgroundResource().

+2

vorrei usare un PNG 9-patch. http://developer.android.com/reference/android/graphics/NinePatch.html –

risposta

30

Quello che è necessario utilizzare è essenzialmente un'immagine di 9-patch (Come già sottolineato da Ken Lupo in questo commento).

Per iniziare, includo un set di immagini a 9 patch da una delle mie app insieme a una breve porzione di codice su come utilizzarlo durante la creazione di un layout XMl. ;-)

Il 9-patch Set Image:

mdpi hdpi xhdpi

(Questi sono denominati:., Rispettivamente bubble_white_normal_mdpi.9, bubble_white_normal_hdpi.9 e bubble_white_normal_xhdpi.9Rimuovere il _mdpi, _hdpi e _xhdpi dal i nomi dei file dopo averli posizionati nelle rispettive cartelle drawable.

L'XML:

<LinearLayout 
    android:id="@+id/linlaUserOther" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:baselineAligned="false" 
    android:orientation="horizontal" 
    android:padding="2dp" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="top|center" > 

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

      <ImageView 
       android:id="@+id/imgvwProfileOther" 
       android:layout_width="42dp" 
       android:layout_height="42dp" 
       android:adjustViewBounds="true" 
       android:contentDescription="@string/content_desc_user_profile" 
       android:scaleType="centerCrop" 
       android:src="@drawable/ic_contact_picture" > 
      </ImageView> 
     </LinearLayout> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:background="@drawable/bubble_white_normal" 
     android:gravity="top|center" 
     android:orientation="vertical" > 

     .... // OTHER STUFF HERE THAT IS NOT NECESSARY IN THIS CODE SNIPPET ON SO 

    </LinearLayout> 
</LinearLayout> 

NOTA 1:

Anche se, io includo un working set di immagini (quasi alimentazione cucchiaio, se si vuole), vorrei fortemente esorta a creare il tuo set di immagini che si adattano al tuo schema di cose. Inoltre, questo ti equipaggia anche per costruire le tue risorse in futuro. L'unica ragione per cui sto andando al miglio è perché ho perso personalmente 3 giorni facendo in modo che il fumetto sembrasse funzionante. :-(

NOTA 2:..

io pongo l'immagine come sfondo a una LinearLayout Tu, però, sarà necessario impostare al TextView avete bisogno cercando come una bolla di discorso

siti aggiuntivi (Tutorial):

  1. http://adilsoomro.blogspot.in/
  2. https://github.com/AdilSoomro/Android-Speech-Bubble
  3. http://developer.android.com/reference/android/graphics/NinePatch.html
  4. http://developer.android.com/tools/help/draw9patch.html
1

Penso che avrete difficoltà a provare a farlo usando solo i drawable di forma.

Vorrei utilizzare un png a 9 patch.

http://developer.android.com/reference/android/graphics/NinePatch.html

In sostanza si sia trovato/acquista un'immagine o crearne uno nel vostro programma di disegno preferito. Quindi definisci le regioni estensibili usando lo draw9patch tool che gli consente di scalare correttamente nel tuo View.

Ecco un tutorial, è anche specifico per le bolle di discorso!

http://adilsoomro.blogspot.co.uk/2012/11/android-how-to-use-9-patch-png.html

ci vuole un po 'di tempo, ma è una tecnica cruciale per rendere più interfacce visuali progettati.