- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 BlackBerry 应用程序,我需要在其中使用底部的选项卡。
早些时候我已经使用了选项卡,但在屏幕顶部。要将选项卡放在屏幕底部,我使用了 sublayout()
方法。但这样做的副作用是我不能使用 display(index)
现在的方法。每次单击任何选项卡时,只会选择第一个选项卡。当我隐藏 sublayout()
方法比一切正常。
这是我正在使用的代码:
TabControl.java
public class TabControl extends MainScreen{
public static int tabHeight = 0;
public static TabField mTabField = null;
public static Bitmap BACKGROUND_IMAGE = Bitmap
.getBitmapResource("Background_Superhero.png");
private UiApplication uiApp = UiApplication.getUiApplication();
private UiEngine ui = Ui.getUiEngine();
private int displayHieght;
public TabControl(BuddyListField buddyList) {
super(MainScreen.NO_VERTICAL_SCROLL);
}
public void addFields() {
try {
mTabField = new TabField(this);
add(mTabField);
HomeTab home = new HomeTab();
mTabField.addTab(Bitmap.getBitmapResource("home_tab.png"), home,
Field.FOCUSABLE);
SettingTab setting = new SettingTab();
mTabField.addTab(Bitmap.getBitmapResource("Setting_tab.png"), setting,
Field.FOCUSABLE);
AboutTab about = new AboutTab();
mTabField.addTab(Bitmap.getBitmapResource("abouttab.png"), about,
Field.FOCUSABLE);
mTabField.setDefault(Constant.SETTING_TAB_INDEX);
} catch (Exception e) {
System.out.println(e+"=-====>>TabControl");
e.printStackTrace();
}
}
protected boolean keyDown(int keycode, int time) {
if (keycode == 1769472) {
// escape pressed
return true;
}
return super.keyDown(keycode, time);
}
}
public class TabField extends VerticalFieldManager {
private static Bitmap tabBackGroundImage = Bitmap
.getBitmapResource("tab_bar.png");
private Background CONTROL_NORMAL_BG = BackgroundFactory
.createBitmapBackground(tabBackGroundImage);
private Background CONTROL_ACTIVE_BG = BackgroundFactory
.createSolidBackground(Color.SILVER);
public static int indexValue = 0;
private static int mCurrentIndex = 0;
private int mDefault = 0;
private Field mCurrentField = null;
private Vector mTabFields = new Vector();
private MainScreen _mainscreen = null;
private HorizontalFieldManager mTabController = new HorizontalFieldManager();
private UiApplication uiApp = UiApplication.getUiApplication();
private UiEngine ui = Ui.getUiEngine();
private int tabHieght;
private int displayHieght;
public TabField(MainScreen mainscreen) {
super(MainScreen.USE_ALL_HEIGHT);
_mainscreen = mainscreen;
displayHieght = Display.getHeight();
add(mTabController);
SeparatorField separatorField = new SeparatorField();
separatorField.setBackground(CONTROL_ACTIVE_BG);
add(separatorField);
}
public void setDefault(int index) {
mDefault = index;
if (mDefault <= mTabFields.size() - 1) {
display(mDefault);
}
}
public void display(int index) {
VirtualKeyboard virtKbd = _mainscreen.getVirtualKeyboard();
if(virtKbd != null)
virtKbd.setVisibility(VirtualKeyboard.RESTORE);
try {
if (mCurrentField != null) {
if (mCurrentField instanceof TabFieldItem) {
((TabFieldItem) mCurrentField).onUnSelected();
}
delete(mCurrentField);
}
mCurrentField = (Field) mTabFields.elementAt(index);
add(mCurrentField);
mCurrentField.setFocus();
if (mCurrentField instanceof TabFieldItem) {
((TabFieldItem) mCurrentField).onSelected();
}
setDirty(false);
BitmapField mCurrentBG = (BitmapField) mTabController
.getField(mCurrentIndex);
mCurrentBG.setBackground(CONTROL_NORMAL_BG);
mCurrentBG.setBitmap(getOnUnFocusImg(mCurrentIndex));
BitmapField mBG = (BitmapField) mTabController.getField(index);
mBG.setBackground(CONTROL_ACTIVE_BG);
mBG.setBitmap(getOnFocusImg(index));
mCurrentIndex = index;
if(virtKbd != null)
virtKbd.setVisibility(VirtualKeyboard.HIDE);
if (indexValue == 3) {
}
} catch (Exception e) {
System.out.println("Exception: In TabField--->display() "
+ e.toString());
}
}
public void addTab(Bitmap aBitmap, final Field aTabField, long style) {
BitmapField lButton = null;
if (style == Field.FOCUSABLE) {
final BitmapField focusbleButton = new BitmapField(aBitmap,
Field.FOCUSABLE) {
protected boolean navigationClick(int status, int time) {
if (aTabField == null) {
return false;
}
indexValue = getIndex();
display(indexValue);
return true;
}
protected void paint(Graphics graphics) {
if (indexValue == getIndex()) {
graphics.setBackgroundColor(Color.SILVER);
graphics.clear();
}
super.paint(graphics);
}
public void setSpace(int hSpace, int vSpace) {
super.setSpace(hSpace, vSpace);
}
};
focusbleButton.setBackground(CONTROL_NORMAL_BG);
setlButtonSpace(focusbleButton);
lButton = focusbleButton;
} else {
lButton = new BitmapField(aBitmap);
}
/*if (WallpaperMainScreen.tabHeight == 0)
WallpaperMainScreen.tabHeight = lButton.getBitmapHeight();*/
mTabController.add(lButton);
mTabFields.addElement(aTabField);
if (mDefault == mTabFields.size() - 1 && aTabField != null) {
display(mDefault);
}
}
//SUBLAYOUT METHOD USED TO BRING THE TABBAR AT THE BOTTOM OF THE SCREEN---------------
protected void sublayout(int maxWidth, int maxHeight) {
super.sublayout(maxWidth, maxHeight);
tabHieght = mTabController.getHeight();
int y = displayHieght - tabHieght;
setPositionChild(mTabController, 0, y);
}
private void setlButtonSpace(BitmapField lButton) {
int tabWidth = Display.getWidth() / 3;
int imagewidth = lButton.getBitmapWidth();
int imageheight = lButton.getBitmapHeight();
int hPaddingValue = (tabWidth - imagewidth) / 2;
int vPaddingValue = (tabWidth - imageheight) / 7;
lButton.setSpace(hPaddingValue + 1, vPaddingValue);
}
private Bitmap getOnFocusImg(int index) {
Bitmap image = null;
switch (index) {
case 0:
image = Bitmap.getBitmapResource("home_tab.png");
break;
case 1:
image = Bitmap.getBitmapResource("Setting_tab.png");
break;
case 2:
image = Bitmap.getBitmapResource("about_tab.png");
break;
/*case 3:
image = Bitmap.getBitmapResource("exit_tab.png");
break;
*/
}
return image;
}
private Bitmap getOnUnFocusImg(int currentIndex) {
Bitmap image = null;
switch (currentIndex) {
case 0:
image = Bitmap.getBitmapResource("home_tab.png");
break;
case 1:
image = Bitmap.getBitmapResource("Setting_tab.png");
break;
case 2:
image = Bitmap.getBitmapResource("about_tab.png");
break;
/*case 3:
image = Bitmap.getBitmapResource("exit_tab.png");
break;*/
}
return image;
}
protected boolean keyChar(char ch, int status, int time) {
if (mCurrentField != null && mCurrentField instanceof TabFieldItem) {
return ((TabFieldItem) mCurrentField).keyChar(ch, status, time);
} else {
return super.keyChar(ch, status, time);
}
}
}
package com.np.custom;
public interface TabFieldItem {
/**
* Method invoked when the tabField is about to be displayed
*/
public void onSelected();
/**
* Method invoked when the tabField is about to be removed from the display
*/
public void onUnSelected();
public boolean keyChar(char ch, int status, int time);
}
最佳答案
在“add(mTabController)”上方添加一个管理器,并将该管理器的固定高度覆盖子布局并在子布局内设置 setextent,高度必须是 displayheight-mtabcontroller 高度。并删除在 tabfield 类中覆盖的子布局。
关于blackberry - 屏幕底部的 TabField 不会在黑莓中的第一个选项卡以外的所有选项卡上产生点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699571/
我已经坚持了好几天了……很抱歉遇到这样的问题,但是我只是F#本身的初学者。由于关于类型提供程序的讨论很多,所以我决定建立一个类型提供程序并撰写一篇有关它的论文。当我开始时,我不知道什么是类型提供程序。
我正在开发LAN项目唤醒功能,但是我想控制局域网中计算机是否打开。但是我不想使用ICMP或WMI(我的网络上有DC)。那么,对于此问题,是否还有其他选择,例如“套接字连接”,请检查特定端口是否正在使用
我们有一个旧的VB6应用程序,该应用程序使用Crystal Reports XI生成打印报告。我们已经通过经验发现,如果Crystal Reports打印引擎选择了错误版本的 usp10.dll (W
我正在尝试获取有效的 Android 权限列表。我知道 http://developer.android.com/reference/android/Manifest.permission.html
嗨,我是 nginx 的新手,我试图在我的服务器(运行 Ubuntu 4)上设置它,它已经运行了 apache。 所以在我 apt-get install 它之后,我尝试启动 nginx。然后我收到这
如何在VB 6中检查对象的类型-除了'TypeName'之外,是否还有其他方法,因为无法通过'TypeName'进行检查,我希望使用类似QuichWatch窗口的方法。 最佳答案 对于对象变量,请使用
我的 JSP 应用程序中有一个错误。发布后我的 session 被清除: YAHOO.util.Connect.asyncRequest('POST', Url, callback, post
我是一名优秀的程序员,十分优秀!