В Blackberry Показать Labelfield как ссылку - PullRequest
1 голос
/ 01 марта 2012

Как отобразить текст поля метки в виде ссылки, и он должен быть кликабелен. Например, у меня есть текст Забыли пароль, этот текст должен отображаться как ссылка. И при нажатии на него он должен перейти на другой экран.

Пожалуйста, дайте несколько советов или полезных ссылок.bcoz Я новичок в разработке приложений Blackberry.

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Для этого вы можете использовать следующий пользовательский элемент управления.

package com.myapp.controls;

import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.Graphics; 

public class HrefField extends Field {

private String content;
private Font fieldFont;
private int fieldWidth;
private int fieldHeight;
private boolean active = false;
private int backgroundColour = Color.WHITE;
private int textColour = Color.BLACK;
private int[] drawFocusColors;

public HrefField(String content) {
    super(Field.FOCUSABLE);
    this.content = content;
    fieldFont = Font.getDefaultFont();
    fieldWidth = fieldFont.getAdvance(content) + 2;
    fieldHeight = fieldFont.getHeight() + 3;
    drawFocusColors = new int[] { Color.Orange,
            Color.Orange, Color.RED,
            Color.RED};
}

public void setColours(int backgroundColour, int textColour) {
    this.backgroundColour = backgroundColour;
    this.textColour = textColour;
    invalidate();
}

public void setBackgroundColour(int backgroundColour) {
    this.backgroundColour = backgroundColour;
    invalidate();
}

public void setTextColour(int textColour) {
    this.textColour = textColour;
    invalidate();
}

public void setMaskColour() {
    invalidate();
}

public void setFont(Font fieldFont) {
    this.fieldFont = fieldFont;
}

public int getPreferredWidth() {
    return fieldWidth;
}

public int getPreferredHeight() {
    return fieldHeight;
}

protected void layout(int arg0, int arg1) {
    setExtent(getPreferredWidth(), getPreferredHeight());
}

protected void paint(Graphics graphics) {
    int[] X_PTS = new int[] { 0, fieldWidth, fieldWidth, 0 };
    int[] Y_PTS = { 0, 0, fieldHeight, fieldHeight };
    if (active) {
        graphics.drawShadedFilledPath(X_PTS, Y_PTS, null, drawFocusColors,
                null);
    } else {
        graphics.setColor(backgroundColour);
        graphics.fillRect(0, 0, fieldWidth, fieldHeight);
    }

    graphics.setColor(textColour);
    graphics.setFont(fieldFont);
    graphics.drawText(content, 1, 1);
    graphics.drawLine(1, fieldHeight - 2, fieldWidth - 2, fieldHeight - 2);
}

protected boolean navigationClick(int status, int time) {
    fieldChangeNotify(1);
    return true;
}

protected void onFocus(int direction) {
    active = true;
    invalidate();
}

protected void onUnfocus() {
    active = false;
    invalidate();
}
  }
1 голос
/ 01 марта 2012

Вы можете использовать не редактируемые ActiveRichTextField.

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