Как настроить элементы ListField?
-
16-09-2020 - |
Вопрос
Я новичок в BlackBerry Development.my Приложение содержит пять элементов списка, имеющих строки Каждый элемент. Требование, когда одна ячейка выбрана, она должна автоматически увеличить и другие элементы. Я взял два типа изображений для элементов списка один для общего просмотра и один для отображения выбранного элемента при нажатии пользователя на него, что имеет более высоту, чем предыдущий.
Но проблема в том, что я выбрал один элемент, он увеличивается и перекрывается на следующий элемент и не отображает полный элемент и не регулирует пространство среди них. Кто-нибудь может дать мне решение для этого.Я использую следующий фрагмент кода ....
_listField.setCallback(this);
_listField.setRowHeight(45);
_listField.setChangeListener(this);
.
Пустота Пустоты Void (ListField Arg0, Графика, Графика, Int Index, int y, int ширина) {
if (listFieldIndex != index) {
graphics.drawBitmap(0, y, listBkgrnd.getWidth(), listBkgrnd
.getHeight(), listBkgrnd, 0, 0);
graphics.setColor(0xAA0000);
graphics.setFont(this.getFont().derive(Font.BOLD, 17));
graphics.drawText(((Station) _stationList.elementAt(index))
.getStationName(), 15, y + 15, 0,
(listBkgrnd.getWidth() - 70));
graphics.setColor(0x770000);
graphics.setFont(this.getFont().derive(Font.PLAIN, 13));
// graphics.drawText(
// ((Station) _stationList.elementAt(index)).getCT(), 15,
// y + 40, 0, (listBkgrnd.getWidth() - 65));
} else {
graphics.drawBitmap(0, y, playBkgrnd.getWidth(), playBkgrnd
.getHeight(), playBkgrnd, 0, 0);
graphics.setColor(0xAA0000);
graphics.setFont(this.getFont().derive(Font.BOLD, 17));
graphics.drawText(((Station) _stationList.elementAt(index))
.getStationName(), 15, y + 15, 0,
(playBkgrnd.getWidth() - 70));
graphics.setColor(0x770000);
graphics.setFont(this.getFont().derive(Font.PLAIN, 13));
graphics.drawText(
s.getCT(), 15,
y + 40, 0, (playBkgrnd.getWidth() - 65));
}
}
. Решение
Список полей на BlackBerry Предположим, что все строки одинаковы.
Чтобы получить вид эффекта, который вы хотите, используйте кучу выбираемых полей в VerticalFieldManager
, вы получите аналогичный эффект на ListField.Обязательно сделайте свои предметы сфокусированными и вызовите updateLayout
всякий раз, когда они получают или теряют фокус, то в вашем методе GenaCodicetacode установите высоту поля в соответствии с тем, ориентированы ли она или нет.Что-то вроде следующего контура:
public class CustomListFieldItem extends Field {
public boolean isFocusable() {
return true;
}
protected void onFocus(int direction) {
super.onFocus(direction);
updateLayout();
}
protected void onUnfocus() {
super.onUnfocus();
updateLayout();
}
protected void layout(int width, int height) {
if (isFocus()) {
setExtent(width, playBkgrnd.getHeight());
}
else {
setExtent(width, listBkgrnd.getHeight());
}
}
protected void paint(Graphics graphics) {
if (isFocus()) {
// draw selected item
}
else {
// draw unselected item
}
}
}
.