2011-05-30 11 views
7

Używam własnego obrazu ikony jako wskaźnika dla ExpandableListView, ale ikona wydaje się być rozciągnięta, starałem się umieścić plik obrazu w/drawable i/drawable-hdpi bez powodzenia. Jeśli nie używam własnej ikony, wbudowany system Android wygląda ładnie, więc zastanawiam się, czy istnieją jakieś ograniczenia wymiaru obrazu, czy jest coś, co zrobiłem źle?Android ExpandableListView wskaźnik/ikona zawsze rozciągnięty

Dzięki!

Odpowiedz

17

group_indicator.9.png

Cokolwiek obraz używasz jako wskaźnika grupy, sprawiają, że 9 łata (xxx.9.png) obraz i ustawić jego rozciągliwych obszary wokół pikseli granicznych (co prawdopodobnie może być przezroczyste). Zapobiegnie to rozciągnięciu obrazu od środka.

+0

jej nie działa .... nie ma zmiany, jeśli ustawimy 9 obraz patcha ..... jednym z rozwiązań, które stosuję, jest to, że obraz strzałki o tej samej wysokości co tło, w którym wyświetla .... – Jayesh

+0

Jaki jest rozmiar ikony? –

+0

@PavanKumar zależy od tego, jaki rozmiar potrzebujesz. :) –

6

Lista rozwijana to ból. Zawsze rozciąga ikony. Łatwym rozwiązaniem jest użycie dziewięciu obrazów łat, które zawierają tylko rozciągliwy piksel na górze i na dole. Tak więc tylko te dwa piksele są rozciągnięte, a reszta obrazu pozostaje niezmieniona.

nadzieja to ma sens

+0

„tylko rozciągliwy pikseli na obu górny i dolny”, to znaczy nie jest rozciągliwy pikseli na lewo/prawo? – hzxu

+0

również, moje ikony to solidne koło z trójkątem w środku, wygląda na to, że nie można tego zrobić jako dziewięciu łatek. – hzxu

+0

Gdy nie używam własnej ikony, wbudowana ikona Androida nie jest rozciągnięta, więc przypuszczam, że istnieje sposób na rozwiązanie problemu. – hzxu

7

Jeśli chcesz zrobić to wszystko za pomocą kodowania, bez używania innego obrazu, tak to działa.

(1) Ustawianie wskaźnika grupa null

(2) Łącznie z moim niestandardowym wskaźnika grupowego w grupie Układ.

(3) Posiadanie groupClickListener, który zmienia stan wskaźnika.

Fragmenty kodu:

(1) mListView.setGroupIndicator(null);

(2) wliczony mój wskaźnik w układzie grupowym.

<ImageView 
    android:id="@+id/help_group_indicator" 
    android:layout_width="@dimen/help_group_indicator_dimension" 
    android:layout_height="@dimen/help_group_indicator_dimension" 
    android:layout_marginTop="@dimen/help_group_indicator_dimension" 
    android:src="@drawable/down_icon" /> 

(3)

mListView.setOnGroupClickListener(new OnGroupClickListener() { 
    @Override 
    public boolean onGroupClick(ExpandableListView parent, View clickedView, int groupPosition, long rowId) { 
     ImageView groupIndicator = (ImageView) clickedView.findViewById(R.id.help_group_indicator); 
     if (parent.isGroupExpanded(groupPosition)) { 
      parent.collapseGroup(groupPosition); 
      groupIndicator.setImageResource(R.drawable.down_icon); 
     } else { 
      parent.expandGroup(groupPosition); 
      groupIndicator.setImageResource(R.drawable.up_icon); 
     } 
     return true; 
    } 
}); 
Powiązane problemy