Проблема с отображением ShapeDrawable в ImageView - PullRequest
4 голосов
/ 12 января 2010

Я пишу приложение, которое будет создавать нарисованные фигуры и добавлять их в другие рисунки. (Подумайте, как тетрис рисует на доске тетриса.) В качестве теста я хочу, чтобы при загрузке моей активности появлялась конкретная фигура, но я не могу получить Drawable для отображения в созданном мной ImageView. Может кто-нибудь объяснить, почему следующий код не работает?

Код активности:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ImageView mImg = (ImageView) findViewById(R.id.img);

    ShapeDrawable sD = new ShapeDrawable(new RectShape());
    sD.setBounds(1,1,10,10);
    sD.getPaint().setColor(Color.BLUE);

    mImg.setImageDrawable(sD);
}

main.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"
    >
    <ImageView
        android:id="@+id/img"
        android:layout_width="320px"
        android:layout_height="206px"
        />
    <TextView
        android:id="@+id/debug"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>

Примечание: я смог заставить статические ресурсы из папки 'drawable' появляться в этом ImageView, только не Drawables, которые я создал в коде.

Ответы [ 2 ]

16 голосов
/ 13 января 2010

Вы также можете использовать простой вид и просто установить его фон для рисования на фигуру, используя setBackgroundDrawable.

ImageView, вероятно, не может отобразить вашу форму, потому что у него нет размера по умолчанию. Вы можете присвоить вашей фигуре размер по умолчанию, используя sD.setIntrinsicWidth и sD.setIntrinsicHeight.

1 голос
/ 14 января 2010

В качестве альтернативы вы можете создать свой собственный вид, расширяя класс вида. Я предполагаю, что Drawable объекты могут быть обработаны только из пользовательского представления. просто создайте и визуализируйте рисование в методе onDraw()

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