Значок индикатора расширяемого списка в Android

У меня есть расширяемый список в моем навигационном ящике. Я пытаюсь установить значок и заставить его отображаться правильно.

У меня есть два вопроса:

  1. Каким должен быть размер значка индикатора? 32*32? показывает размыто, я хочу иметь простой значок плюса и значок минуса.

  2. Также я пытаюсь разместить значок индикатора справа? Я не в состоянии сделать это?

Я пробовал все способы, но они не работали, вот один из них:

@Override
public void onWindowFocusChanged(boolean hasFocus) 
{
    super.onWindowFocusChanged(hasFocus);

    metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    width = metrics.widthPixels;

    if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) 
    {
        expListView.setIndicatorBounds(width - GetDipsFromPixel(50), width - GetDipsFromPixel(10));
    } 
    else 
    {
        expListView.setIndicatorBoundsRelative(width - GetDipsFromPixel(50), width - GetDipsFromPixel(10));
    }
}

Я тестирую приложение на Nexus 5 (5.0) и Galaxy Nexus (4.3).

Может ли кто-нибудь помочь мне с этим?


person TheDevMan    schedule 05.03.2015    source источник


Ответы (1)


Наконец решил проблему сам. Надеюсь, что приведенный ниже ответ будет полезен для тех, кто изо всех сил пытается переместить индикатор группы вправо и т. Д.

Вместо «android: groupIndicator» я добавил imageView в список групп.

    <ImageView
    android:id="@+id/expandableIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="15dp"
    android:src="@drawable/plus"
    android:visibility="invisible"
    tools:ignore="RtlHardcoded" />

Затем в BaseExpandableListAdapter место, где вызывается groupView:

Я использовал :

        if(groupPosition != -1)
        {
            int imageResourceId = isExpanded ? R.drawable.plus : R.drawable.minus;
            image.setImageResource(imageResourceId);
            image.setVisibility(View.VISIBLE);
        } 
        else 
        {
            image.setVisibility(View.INVISIBLE);
        }

Вышеупомянутое просто обходной путь вместо индикатора группы по умолчанию. Это решает проблему.

Все еще не можете определить реальный размер groupindicator? на данный момент я использую 25 * 25, кажется, все идет хорошо, но я бы сказал, что должен быть какой-то лучший размер, чтобы показать хорошее качество.

Спасибо!

person TheDevMan    schedule 06.03.2015