2016-10-24 1 views
1

私は現在、アンドロイドのepson ePOS SDKを使用しています。 メニュー名が左に揃っていて、その価格が同じ行で右に並んでいても正しく動作しないという領収書を印刷する必要があります 私の一時的な解決策は価格を調整するためのフィードラインを追加することです両方のテキストを同じ行の左右に整列させることは可能ですか? (下記添付ファイルと疑問符記号を無視してください)Epson epos sdk領収書の整列の問題

   mPrinter.addTextAlign(Printer.ALIGN_LEFT); 
       mPrinter.addFeedLine(0); 
       textData.append(menuName); 
       mPrinter.addText(textData.toString()); 
       textData.delete(0, textData.length()); 
       mPrinter.addFeedLine(0); 

       //print price 
       mPrinter.addTextAlign(Printer.ALIGN_RIGHT); 
       textData.append(price + "Y" + "\n"); 
       mPrinter.addText(textData.toString()); 
       textData.delete(0, textData.length()); 
       mPrinter.addFeedLine(0); 

enter image description here

答えて

1

80ミリメートルを簡単にパディングすることができ行あたり42列...のようなものです:

mPrinter.addText(padLine(menuName, price + "¥", 42, " ") + "\n"); 

必要String操作メソッドは同様に見えます:

/** utility: pads two strings to columns per line */ 
protected String padLine(@Nullable String partOne, @Nullable String partTwo, int columnsPerLine, String str){ 
    if(partOne == null) {partOne = "";} 
    if(partTwo == null) {partTwo = "";} 
    if(str == null) {str = " ";} 
    String concat; 
    if((partOne.length() + partTwo.length()) > columnsPerLine) { 
     concat = partOne + str + partTwo; 
    } else { 
     int padding = columnsPerLine - (partOne.length() + partTwo.length()); 
     concat = partOne + repeat(str, padding) + partTwo; 
    } 
    return concat; 
} 

/** utility: string repeat */ 
protected String repeat(String str, int i){ 
    return new String(new char[i]).replace("\0", str); 
} 

価格をパディングする前に価格を通貨にフォーマットする必要があります。

+1

あなたの答えに感謝し、それは完璧に動作します! –