Как добавить изображения на просмотр текста на какое-то событие - PullRequest
1 голос
/ 22 ноября 2011

В моем приложении для Android у меня есть список и заголовок списка.для заголовка списка я использовал этот макет:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"
    android:weightSum="1">

    <TextView android:text="#" android:layout_height="wrap_content"
        android:layout_width="0dp" android:background="@drawable/back"
        android:layout_weight=".05" android:gravity="center_horizontal"
        android:id="@+id/header_num"/>:
    <TextView android:text="Summary" android:layout_height="wrap_content"
        android:layout_width="0dp" android:background="@drawable/back"
        android:layout_weight=".55" android:gravity="center_horizontal"
        android:id="@+id/header_summ" />
</LinearLayout>

для android: background = "@ drawable / back":

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#ffffff" />
    <stroke android:width="1dip" android:color="#4fa5d5" />


</shape>

Теперь на основе заголовкаitem, применяю сортировку к элементу списка следующим образом:

ticketnum = (TextView) findViewById(R.id.header_num);
        ticketnum.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                Comparator<Ticket> mc;
                mc = new TicketIdComparator();
                Collections.sort(tickets, mc);
                System.out.println(tickets);
                ticket_adapter = new TicketAdapter(getApplicationContext(),
                        R.layout.ticket_details_row, tickets);
                setListAdapter(ticket_adapter);

                ticket_adapter.notifyDataSetChanged();

            }
        });

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

Пожалуйста, предложите, как я могу добавить эти два изображения.

Спасибо.

1 Ответ

1 голос
/ 22 ноября 2011

Вы можете установить стрелку вверх или вниз слева от текста в textView (чтобы он выглядел как значок ... Я думаю, это то, что вы хотите?)

Сначала поместите png в вашу папку для рисования и назовите ее upArrow.png и добавьте одну с именем downArrow.png

Затем установите стрелку для отображения слева от текста a textView:

myTextView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.upArrow, 0, 0, 0);

См. setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom) Используйте другие аргументы для установки стрелки над, справа или под текстом.

Теперь, если вместо этого вы хотите изменить фоновое изображение (например, отключите R.drawable.back), вы также должны начать с сохранения upArrow.png и downArrow.png в папке drawbles, а затем вы можете вызвать

myTextView.setBackgroundDrawable(R.drawable.upArrow);

См. setBackgroundDrawble (Drawable d)

Также обратите внимание, что (начиная с версии 2.1) вы можете поместить вызов метода для прослушивателя onclick в ваш XML. Это может сделать код чище. В вашем случае, чтобы добавить заголовок слушателя к headerNum:

 <TextView android:text="#" android:layout_height="wrap_content"
        android:layout_width="0dp" android:background="@drawable/back"
        android:layout_weight=".05" android:gravity="center_horizontal"
        android:id="@+id/header_num" 
        android:onClick="myOnclickListener"/>

Затем в вашем классе Activity просто добавьте метод:

public void myOnclickListener(View v) {
    ...
}

Вы также можете программно добавить imageView, хотя это более сложный процесс. Или вы можете добавить в оба изображения imageView стрелок вверх и вниз рядом с каждым заголовком, а также включить и выключить видимости для соответствующей программы один раз, используя:

myImageView.setVisibility(View.VISIBLE);

и

myImageView.setVisibility(View.GONE);

Хотя я думаю, что использование изображений bg или левых отрисовок является самым простым и сохраняет ваш xml минимальным. Если вы на самом деле добавляете imageViews, вы, вероятно, захотите переключиться на RelativeLayout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...