2015-08-07 16 views
6

Ich muss den Kontaktnamen Anfangsbuchstaben innerhalb des Kreises wie in Lollipop-Kontakten anzeigen. Ich habe keine Lösung gefunden.Anzeigen des Kontaktnamens mit Anfangsbuchstaben im Kreis

Der Kreis sollte für jeden Benutzer eine andere Farbe haben.

+0

was hast du bisher versucht? –

+0

Ich habe versucht, es benutzerdefiniert zu machen, aber ich suche nach einer Richtlinie in Material Design, da die App für Lollipop gemacht wird. – Sudhanshu

+0

Ich stimme für das Schließen dieser Frage als Off-Topic ab, da wir kein Code-Schreibdienst sind. Sie sollten versuchen, Ihr Problem selbst zu lösen, und dann eine Frage stellen, wenn Sie ein bestimmtes Problem haben. –

Antwort

25

Sie können folgen this. Wenn Sie Zeit sparen möchten, können Sie this Bibliothek verwenden.

bearbeiten

Der Link kann jeden beliebigen Punkt der Zeit ungültig werden. Also möchte ich die Details darunter hinzufügen.

repositories{ 
    maven { 
    url 'http://dl.bintray.com/amulyakhare/maven' 
    } 
} 

dependencies { 
    compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' 
}  

Sie können jede Methode hinzufügen, der Sie folgen.

Grundsätzlich müssen Sie eine ImageView mit der gleichen Höhe und Breite hinzufügen und diese TextDrawable als Hintergrund Ihrer Ansicht hinzufügen.

TextDrawable drawable = TextDrawable.builder() 
      .buildRect("A", Color.RED); 
ImageView image = (ImageView) findViewById(R.id.image_view); 
image.setImageDrawable(drawable);  

Die Bibliothek hat die Unterstützung für circle, square und rectangle Drawables.

+0

Obwohl dies möglicherweise eine ziemlich gute Antwort ist, ist es im Wesentlichen eine "Link Only" Antwort. Sie sollten einige Informationen aus Ihren Links einfügen, so dass die Antwort immer noch sinnvoll ist, wenn die Informationen hinter den Links jemals geändert werden oder verloren gehen. Siehe [diese Verbindung] (http://meta.stackexchange.com/questions/225370/ihr-answer-is-in-andere-castle-when--is-ansanswer-not-an-answer) –

+0

Danke für Ihr Vorschläge @JamesWebster. – ImMathan

+0

@ImMathan ist dies eine viel bessere Antwort. Ich habe meinen Downvote rückgängig gemacht und upvoted –

3

Ich habe keine Bibliothek dafür, aber meine Lösung ist ein Kreis in der Laufzeit zeichnen diese in einem vordefinierten Layout in Ihrem xml verwenden: How to draw circle by canvas in Android?

dann in der Liste Adapter ersten Buchstaben jedes Namens wählen Zeichenfolge mit Teilzeichenfolge (0,1) , und mit setText() können Sie Listenelement TextView auf den ersten Buchstaben festlegen. Wenn Sie Quellcode benötigen, lassen Sie mich wissen, um es für Sie zu setzen.

UPDATE: ich vor kurzem sehr einfache Vorgehensweise für diese in einem meiner apps verwendet, Sie ein Layout wie dies in Ihrem Layout-Ordner machen sollte: als

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rlWeekDay" 
    android:layout_width="45dp" 
    android:layout_height="45dp" 
    android:layout_gravity="right" 
    android:layout_margin="3dp" 
    android:background="@drawable/circle_shape"> 

<TextView 
    android:id="@+id/tvWeekDayFirstLetter" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:text=" E " 
    android:textStyle="bold" 
    android:textColor="@color/colorPrimary" 
    android:textSize="20sp" /> 
</RelativeLayout> 

Und Ihre Form in ziehbar Ordner circle_shape.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="oval" 
      android:dither="true"> 

      <corners 
      android:bottomRightRadius="100dp" 
      android:bottomLeftRadius="100dp" 
      android:topLeftRadius="100dp" 
      android:topRightRadius="100dp"/> 

     <solid android:color="#ccc" /> 

    </shape> 
</item> 
<item android:bottom="3dp"> 
<shape android:shape="oval" 
    android:dither="true"> 
<solid android:color="@color/white"/> <!-- this one is ths color of the Rounded Button --> 
<corners 
    android:bottomRightRadius="100dp" 
    android:bottomLeftRadius="100dp" 
    android:topLeftRadius="100dp" 
    android:topRightRadius="100dp"/> 



</shape> 
    </item> 
    </layer-list> 

Dann in Ihrem Listview oder recyclerview dieser Verwendung als Element dieses enter image description here inflate.like

+0

Kannst du bitte den Code teilen, damit es mehr Hilfe gibt? –

+1

@AlokRajasukumaran Rajasukumaran Überprüfen Sie die UPDATE ich zur Verfügung gestellt. –