Wie erstellt man eine alphabetische Bildlaufleiste mit allen Buchstaben in Android?
Mein Zweck ist, um etwas zu bekommen, wie, dass :
Aber die einzigen Beispiele, die ich finden kann, sind Listen wie die, dass :
android - listview fastscroll mit alphabet wie auf dem iPhone-Kontakte-Aktivität
Offensichtlich, ich will nicht eine Liste wie die Kontakte angezeigt werden die Briefe, wenn Sie fastscroll. Ich weiß, wie dies zu tun.
Alle Zeiger wäre willkommen.
(Ich habe versucht, diese aber ohne Erfolg),
Unten die vollständige Lösung vorschlagen, die von FunkTheMonk (vielen Dank) :
Definieren die listview als üblich. Definieren Sie ein RelativeLayout mit der ListView
und auf der rechten Seite, eine LinearLayout
mit allen Buchstaben. Für eine bessere Lösung, die Liste der Buchstaben könnte sich dynamisch generiert werden, um nur die Anzeige der Buchstaben in der Liste. Dann in der onClick-Methode, Beurteilung des Verhaltens, um durch die Liste scrollen :
xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginRight="28dip" />
<LinearLayout android:orientation="vertical"
android:layout_width="28dip" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:background="@android:color/transparent" >
<TextView android:id="@+id/A" android:text="A" android:tag="A"
style="@style/alphabetTextView"/>
<TextView android:id="@+id/B" android:text="B" android:tag="B"
style="@style/alphabetTextView" />
<TextView android:id="@+id/C" android:text="C" android:tag="C"
style="@style/alphabetTextView" />
<TextView android:id="@+id/D" android:text="D" android:tag="D"
style="@style/alphabetTextView" />
<TextView android:id="@+id/E" android:text="E" android:tag="E"
style="@style/alphabetTextView" />
<TextView android:id="@+id/F" android:text="F" android:tag="F"
style="@style/alphabetTextView" />
<TextView android:id="@+id/G" android:text="G" android:tag="G"
style="@style/alphabetTextView" />
<TextView android:id="@+id/H" android:text="H" android:tag="H"
style="@style/alphabetTextView" />
<TextView android:id="@+id/I" android:text="I" android:tag="I"
style="@style/alphabetTextView" />
<TextView android:id="@+id/J" android:text="J" android:tag="J"
style="@style/alphabetTextView" />
<TextView android:id="@+id/K" android:text="K" android:tag="K"
style="@style/alphabetTextView" />
<TextView android:id="@+id/L" android:text="L" android:tag="L"
style="@style/alphabetTextView" />
<TextView android:id="@+id/M" android:text="M" android:tag="M"
style="@style/alphabetTextView" />
<TextView android:id="@+id/N" android:text="N" android:tag="N"
style="@style/alphabetTextView" />
<TextView android:id="@+id/O" android:text="O" android:tag="O"
style="@style/alphabetTextView" />
<TextView android:id="@+id/P" android:text="P" android:tag="P"
style="@style/alphabetTextView" />
<TextView android:id="@+id/Q" android:text="Q" android:tag="Q"
style="@style/alphabetTextView" />
<TextView android:id="@+id/R" android:text="R" android:tag="R"
style="@style/alphabetTextView" />
<TextView android:id="@+id/S" android:text="S" android:tag="S"
style="@style/alphabetTextView" />
<TextView android:id="@+id/T" android:text="T" android:tag="T"
style="@style/alphabetTextView" />
<TextView android:id="@+id/U" android:text="U" android:tag="U"
style="@style/alphabetTextView" />
<TextView android:id="@+id/V" android:text="V" android:tag="V"
style="@style/alphabetTextView" />
<TextView android:id="@+id/W" android:text="W" android:tag="W"
style="@style/alphabetTextView" />
<TextView android:id="@+id/X" android:text="X" android:tag="X"
style="@style/alphabetTextView" />
<TextView android:id="@+id/Y" android:text="Y" android:tag="Y"
style="@style/alphabetTextView" />
<TextView android:id="@+id/Z" android:text="Z" android:tag="Z"
style="@style/alphabetTextView" />
</LinearLayout>
</RelativeLayout>
Java
@Override
public void onClick(View v) {
String firstLetter = (String) v.getTag();
int index = 0;
if (stringList != null) {
for (String string : stringList) {
if (string.startsWith(firstLetter)) {
index = stringList.indexOf(string);
break;
}
}
}
lv.setSelectionFromTop(index, 0);
}
InformationsquelleAutor der Frage Sephy | 2011-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine iPhone-Funktion, Android nutzt schnell scrollen. Ich würde empfehlen, dass Sie die Plattform nutzen, die alternative, anstatt zu versuchen, zu erzwingen, gemeinsame Funktionalität.
Wenn Sie müssen, müssen Sie implementieren diese selbst. Setzen Sie Ihre Liste Ansicht in einem RelativeLayout und setzen A-Z TextViews, die in einer vertikalen LinearLayout, das
layout_alignParentRight="true"
. Legen Sie die TextView ' s-tag von A-Z appropiately und setzenonClick="quickScroll"
auf alle von Ihnen.Umsetzung in Ihre Tätigkeit:
Diese wird navigieren Sie zu dem ausgewählten Buchstaben onClick, aber ich glaube, Sie können streichen Sie mit Ihrem finger über das alphabet auf dem iPhone und es werde die Liste aktualisieren? Sie müssen implementieren eine onTouchListener eher als onClickListener.
InformationsquelleAutor der Antwort FunkTheMonk
Können Sie versuchen, mit
IndexScroller
, die nur dann sichtbar, auf Berührung und automatisch unsichtbar, wenn Sie keinen Kontakt.Hier ist der screenshot
InformationsquelleAutor der Antwort Nam Trung