Android: пользовательский чертеж ListView - PullRequest
0 голосов
/ 30 марта 2011

Считай меня нубом из Android;Я пытаюсь создать собственный ListView, который должен выглядеть примерно так («это» - это собственный ListView, реализованный в BlackBerry, но я хочу создать такой же внешний вид на Android): Custom ListView with rounded corners, implemented on BlackBerry

В настоящее время я разработал следующий код Android и XML, но он не меняет внешний вид стандартного ListView:

Код:

public class RoundedListView extends ListView
{
    public RoundedListView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public RoundedListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public RoundedListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public void onDraw(Canvas canvas)
    {       
        Paint paint = new Paint();
        paint.setColor(Color.CYAN);

        canvas.drawRect(10, 10, 10, 10, paint);
        canvas.drawColor(Color.YELLOW);

        super.onDraw(canvas);
    }
}

XML (основной.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <com.gravityzoo.android.containers.RoundedListView 
        android:layout_height="wrap_content" 
        android:id="@+id/listView1" 
        android:layout_width="match_parent">
    </com.gravityzoo.android.containers.RoundedListView>
</LinearLayout>

Кто-нибудь знает, как заставить работать эту простую функцию рисования?Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Android сильно отличается от Blackberry.

В Android вы можете установить фон и поля на элементах ListView для достижения вышеуказанных эффектов.Обычно нет необходимости комбинировать пользовательский рисунок с «обычными» членами иерархии представления, такими как ListView, TextView и т. Д.

Часто в разработке Blackberry вы создаете подкласс поля фреймворка просто для предоставления емунастраиваемая ширина и высота.В Android вы можете сделать это с помощью простой «композиции»;другими словами, создание экземпляра компонента и затем установка для него атрибутов без создания подклассов.

Еще один важный момент заключается в том, что ListView имеет тенденцию быть для однородных данных, где все строки следуют одному и тому же общему формату или небольшомугруппа форматов. Если у вас есть только четыре предмета, и каждый из них имеет разные характеристики, то я предлагаю вам использовать простой старый LinearLayout, который позволит вам расположить ваши представления вертикально.Это избавит вас от трудоемкой работы с четырьмя представлениями в адаптере и даст вам максимальный контроль над отображением каждого элемента.

0 голосов
/ 31 марта 2011

Вот еще несколько мест, где вы можете начать искать эту простую раскладку:

http://www.droiddraw.org/widgetguide.html

http://developer.android.com/resources/articles/listview-backgrounds.html

Все это, кажется, параправки и кнопки внутри списка.

...