Android:drawTextOnPath multiline

时间:2016-05-25 22:19:53

标签: android android-canvas

我当前有一个自定义视图,我覆盖了onDraw并绘制了一个弧。我想在这个弧内画出文字。为此,我使用drawTextOnPath,并在弧顶部显示弯曲文本。但是,有时文本很长,所以我想让它继续多行。

我目前使用这样的代码来绘制多行: -

textView.getPaint().getTextBounds(s, 0,
                    s.length(), r);
            int yOffset=r.height() + textSpacing;
            int textStart=0;
            int numberOfLines= (int) (r.width()/arcWidth) + 1;
            for (int i=0; i < numberOfLines; i ++) {
                canvas.drawTextOnPath(s.substring(textStart, textStart + s.length() / numberOfLines),
                        childHolder.path, 0, yOffset, paint);
                yOffset+=r.height() +textSpacing;
                textStart=s.length()/numberOfLines;
            }  

然而,这显然没有考虑文本在弧下的宽度。有没有办法使用像staticlayout / dynamiclayout这样的东西(文本确实改变了很多)。

如果有人能指出我在Android SDK中可以使用的东西,或者数学来计算可用的宽度

1 个答案:

答案 0 :(得分:0)

这段代码解决了我的问题: -

if ($sum != $val1+$val2) {   //simple captcha
        echo '<div id="message_position_capreg"><p class="error_form"><font color="red">Incorrect. Try again</font></p></div>';
    }
    else {
        if ($_POST['code']){
$code=$_POST['code'];

global $wpdb;
$sql = $wpdb->prepare("SELECT id FROM code_sms WHERE code = %s", $cd);
$check_code = $wpdb->get_results($sql);

if ($check_code>0)  {

$wpdb->delete( 'code_sms', array( 'code' => $code ) );

// Removed closing braces here

if ( isset( $_POST["submit_formm"] ) && $_POST["company_nip"] && $_POST["company_name"] != "" ){
            $company_nip = strip_tags($_POST["company_nip"], "");
            $company_name = strip_tags($_POST["company_name"], "");
$result = $wpdb->insert( 
                'test', 
                array( 
                    'company_nip' => $company_nip, 'company_name' => $company_name)
            );

if (!$result) {
        echo '<div>
ERROR</div>';
        }
        else {

         echo '<div>
Succes</div>';
        }
    }
     }
}

} // Added closing braces here

谢谢pskink!