2011-05-30 7 views
7

Я использую свое собственное изображение значка в качестве индикатора для ExpandableListView, но значок кажется растянутым, я попытался поместить файл изображения в/drawable и/drawable-hdpi без везения. Если я не использую свой собственный значок, встроенный Android выглядит хорошо, поэтому я задаюсь вопросом, есть ли какие-либо ограничения на размер изображения или что-то я сделал неправильно?Android ExpandableListView индикатор/значок всегда растягивается

Спасибо!

ответ

17

group_indicator.9.png

Независимо изображение, которое вы используете в качестве индикатора группы, сделать его 9 патч (xxx.9.png) изображение и установите его растяжению области около пограничных пикселей (который, вероятно, может быть прозрачным). Это предотвратит растяжение изображения с середины.

+0

его не работает .... нет никаких изменений, если мы установим 9 патч-изображения ..... Одно из решений, которые я применяю, - это сделать изображение стрелки той же высоты, что и фон, где он отображается .... – Jayesh

+0

Каков размер значка? –

+0

@PavanKumar это зависит от того, какой размер вам нужен. :) –

6

Расширяемый список - это боль. Он всегда растягивает значки. Простое решение - использовать девять изображений патчей, которые содержат только растяжимый пиксель как сверху, так и снизу. Таким образом, только те два пикселя растягиваются, а остальная часть вашего изображения остается неизменной.

надеюсь, что это имеет смысл

+0

«только растяжению пиксель сверху и снизу», это значит, что нет растяжения пикселя на левом/правом? – hzxu

+0

также, мои значки - сплошной круг с треугольником внутри, похоже, что невозможно сделать это девятым патчем. – hzxu

+0

Когда я не использую свой собственный значок, встроенный значок Android не растягивается, поэтому я предполагаю, что есть способ решить проблему. – hzxu

7

Если вы хотите сделать это все через кодирование, не используя другое изображение, так я получил эту работу.

(1) Установка индикатора группы обнулить

(2) Включая моего пользовательского индикатора группы в группе Layout.

(3) Имеет groupClickListener, который изменяет состояние вашего индикатора.

фрагменты кода:

(1) mListView.setGroupIndicator(null);

(2) Включена мой индикатор в макете группы.

<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; 
    } 
});