mt2503 多行文本编辑时,不显示不能完整显示的行
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
多行文本编辑时,由于编辑框的高度固定,不一定是行高整数倍,会出现编辑框最上部或最下部的内容不能完全显示的情况。
[SOLUTION]
如果不希望显示这些行可以参考下面的修改方法:
在当前的设计基础上,根据显示区域的判断,决定当前行是否需要显示出来,具体如下:
在gui_multi_line_inputs.c中修改gui_draw_multi_line_one_line()
gui_draw_multi_line_one_line()
{
......
UI_string_typedefault_text=NULL;
#if1//addstart
S32cx1,cy1,cx2,cy2;
#endif//addend
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
g_Editor_line.cur_read=0;
baseline=g_editor_line.line_ascent;
#if1//addstart
gui_get_CLIp(&cx1,&cy1,&cx2,&cy2);//获取当前画editor时clip区域。
if((bs->yty<cy1)||(bs->yty+g_editor_line.line_height>(cy2+1)))
{
return;//判断当前行画的位置是否超出clip区域,如果超出就直接return,不画当前行。
//另外也可以自己调节判断条件是超出一部分才return.
}
#endif//addend
if(!(b->ext_flags&GUI_MULTI_LINE_INPUT_BOX_HIDE_TEXT_CONTENT))
......
}
附:
[Editor]系统开机后,VRT模块不停向native Ebook模块发message
请把客制化添加的messageID修改在Stack_msgs.h中MSG_ID_CUSTOM1_CUSTOM2之后,
不在系统原有定义messageID的文件中添加。避免出现库文件中使用错误messageID的情况。
[Editor]multiline Editor 显示流程
multiline Editor 显示流程主要是在一个while循环中 调用gui_find_multi_line_one_line()去断行,
决定一行内显示的内容。断出一行后就调用gui_draw_multi_line_one_line()去把断出的一行内容画出来。
如此循环直到内容显示完。遇到multiline Editor显示问题时可以先查看这个流程看引起问题的原因。
[Editor]在dialer search中自动变化字体
在函数wgui_cat203_set_editor_focus_state的最后面添加如下代码:
if(MMI_singleline_inputbox.text_length<=10)
MMI_singleline_inputbox.text_font=&MMI_large_font;
else
if(MMI_singleline_inputbox.text_length<=15)
MMI_singleline_inputbox.text_font=&MMI_medium_font;
else
if(MMI_singleline_inputbox.text_length>15)
MMI_singleline_inputbox.text_font=&MMI_small_font;
其中多少个字符之后要变化字体
多行文本编辑时,由于编辑框的高度固定,不一定是行高整数倍,会出现编辑框最上部或最下部的内容不能完全显示的情况。
[SOLUTION]
如果不希望显示这些行可以参考下面的修改方法:
在当前的设计基础上,根据显示区域的判断,决定当前行是否需要显示出来,具体如下:
在gui_multi_line_inputs.c中修改gui_draw_multi_line_one_line()
gui_draw_multi_line_one_line()
{
......
UI_string_typedefault_text=NULL;
#if1//addstart
S32cx1,cy1,cx2,cy2;
#endif//addend
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
g_Editor_line.cur_read=0;
baseline=g_editor_line.line_ascent;
#if1//addstart
gui_get_CLIp(&cx1,&cy1,&cx2,&cy2);//获取当前画editor时clip区域。
if((bs->yty<cy1)||(bs->yty+g_editor_line.line_height>(cy2+1)))
{
return;//判断当前行画的位置是否超出clip区域,如果超出就直接return,不画当前行。
//另外也可以自己调节判断条件是超出一部分才return.
}
#endif//addend
if(!(b->ext_flags&GUI_MULTI_LINE_INPUT_BOX_HIDE_TEXT_CONTENT))
......
}
附:
[Editor]系统开机后,VRT模块不停向native Ebook模块发message
请把客制化添加的messageID修改在Stack_msgs.h中MSG_ID_CUSTOM1_CUSTOM2之后,
不在系统原有定义messageID的文件中添加。避免出现库文件中使用错误messageID的情况。
[Editor]multiline Editor 显示流程
multiline Editor 显示流程主要是在一个while循环中 调用gui_find_multi_line_one_line()去断行,
决定一行内显示的内容。断出一行后就调用gui_draw_multi_line_one_line()去把断出的一行内容画出来。
如此循环直到内容显示完。遇到multiline Editor显示问题时可以先查看这个流程看引起问题的原因。
[Editor]在dialer search中自动变化字体
在函数wgui_cat203_set_editor_focus_state的最后面添加如下代码:
if(MMI_singleline_inputbox.text_length<=10)
MMI_singleline_inputbox.text_font=&MMI_large_font;
else
if(MMI_singleline_inputbox.text_length<=15)
MMI_singleline_inputbox.text_font=&MMI_medium_font;
else
if(MMI_singleline_inputbox.text_length>15)
MMI_singleline_inputbox.text_font=&MMI_small_font;
其中多少个字符之后要变化字体