Добавление пользовательского изображения в основной макет

StackOverflow https://stackoverflow.com/questions/3716157

  •  02-10-2019
  •  | 
  •  

Вопрос

Вот сделка.

Я просматривал этот код о расширении изображения:

http://marakana.com/forums/android/examples/98.html

И мне было интересно, как я могу добавить новый вид в существующий файл макета XML, а также некоторые другие представления.

Я уже сделал это в своей основной линейной макете:

<FrameLayout android:id="@+id/FrameLayout01" android:layout_width="300dp" android:layout_height="300dp">
        <com.marakana.Rose android:layout_height="wrap_content" android:layout_width="wrap_content"/>

Но проблема в том, что таким образом метод OnDraw не вызывается.

Кто -нибудь может предложить решение для этого? Может быть, некоторые примеры, в которых вы объединяете CustomViews с макетом XML.

Tnx.

Это было полезно?

Решение 2

Я думаю, что решил это. Я использовал свой код в файле main.xml, и он работает. Что мне нужно было сделать, так это переопределить новый конструктор класса, принимающий атрибут, вместе с контекстом в качестве параметра, а затем использовать FindViewByID (CustomViewName), чтобы ссылаться на его в действие и использовать функции, определенные в CustomView.

Другие советы

Вы добавили определение в res/values/attrs.xml?

<declare-styleable name="Rose">
</declare-styleable>

Я не уверен, нужно ли это, если вы не добавите ни одного атрибута XML ...

Кроме того, это поможет, если вы опубликовали код com.marakana.rose. Как пример, это классное объявление собственного компонента:

public class CalendarCell extends ImageButton implements OnTouchListener

Ondraw:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

И это фрагмент моего макета XML:

<TableRow>
        <com.view.customcomponents.CalendarCell
            style="@style/NumericImageButton"
            android:id="@+id/calendar_row1_col1"

            android:background="@drawable/calendar_bg_selector" />

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

РЕДАКТИРОВАТЬ: Я думаю, что это учебные пособия, с которыми я следовал, хотя мне пришлось сделать какую -то работу, чтобы наконец заставить ее работать:

Официальные документы

AndDev.org

Чтобы инструменты разработчика Android взаимодействовать с вами, как минимум, вы должны предоставить конструктор, который принимает Контекст и атрибута объект как параметры. Этот конструктор позволяет layout editor to create and edit an instance of your view.

class PieChart extends View {
    public PieChart(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

И деталь Ответьте здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top