Как создать собственный ProgressBar и использовать его в виджете? - PullRequest
0 голосов
/ 02 июля 2011

Я хотел бы использовать свой собственный расширенный класс ProgressBar в Widget. Я создал действительно простой MyProgressBar, и если я помещу это в стандартный макет активности, он работает. Конечно, я также установил атрибут стиля в "? Android: attr / progressBarStyleHorizont" в свойстве MyProgressBar в конструкторе.

Но если я сделаю то же самое и поместу его в макет виджета, это хорошо видно в дизайнере макетов в затмении, однако виджет не работает в трагете. На целевом устройстве отображается только сообщение «Проблема при загрузке виджета» вместо макета виджета ....

Исходный код MyProgressBar находится здесь:

открытый класс MyProgressBar расширяет ProgressBar {

public MyProgressBar(Context context) {   
    super(context);   
}   

public MyProgressBar(Context context, AttributeSet attrs) {   
    super(context, attrs);   
}   

public MyProgressBar(Context context, AttributeSet attrs, int defStyle) {   
    super(context, attrs, defStyle);   
}   

@Override  
protected synchronized void onDraw(Canvas canvas) {   
    // First draw the regular progress bar, then custom draw our text   
    super.onDraw(canvas);
}   

}

Ответы [ 2 ]

0 голосов
/ 06 октября 2013

Виджет приложения может поддерживать следующие классы макета: FrameLayout, LinearLayout, RelativeLayout, GridLayout.

И следующие классы виджетов: AnalogClock, Button, Chronometer, ImageButton, ImageView, ProgressBar, TextView, ViewFlipper, ListView, GridView, StackView, AdapterViewFlipper.

Потомки этих классов не поддерживаются.

Скопировано из: http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout

0 голосов
/ 04 июля 2011

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

...