programing

Android XML 백분율 기호

goodsources 2023. 9. 18. 21:18
반응형

Android XML 백분율 기호

제가 여러 줄의 끈을 가지고 있는데, 그 끈들은%기호가 사용됩니다.사용하기에 적합한 형식%%. 해당 배열에 여러 개의 문자열이 있을 때%그것은 나에게 이 오류를 줍니다.

 Multiple annotations found at this
 line:
 - error: Multiple substitutions specified in non-positional format;
   did you mean to add the formatted="false" attribute?
 - error: Found tag </item> where </string-array> is expected

Android 자산 패키징 툴(aapt)는 최신 버전에서 매우 엄격해졌고 현재 모든 안드로이드 버전에 사용되고 있습니다.사용자가 받는 appt-error는 더 이상 위치가 아닌 형식 지정자를 허용하지 않기 때문에 생성됩니다.

다음은 %-심볼을 리소스 문자열에 포함하는 방법에 대한 몇 가지 아이디어입니다.

문자열에 형식 지정자나 대체 기능이 필요하지 않다면 간단히 사용할 수 있습니다.formatted속성을 지정하고 설정합니다.false:

<string formatted="false">%a + %a == 2%a</string>

이 경우 문자열이 의 형식 문자열로 사용되지 않으므로 %-기호를 벗어날 필요가 없습니다.결과 문자열은 "%a + %a == 2%a"입니다.

생략할 경우formatted="false"문자열이 형식 문자열로 사용되므로 %-subject를 탈출해야 합니다.이 작업은 두 배%로 올바르게 수행됩니다.

<string>%%a + %%a == 2%%a</string>

지금이다aapt오류는 없지만 사용 방법에 따라 형식 인수 없이 가 호출될 경우 결과 문자열은 "%%a + %%a == 2%%%a"가 될 수 있습니다.

Resources res = context.getResources();

String s1 = res.getString(R.string.str);
// s1 == "%%a + %%a == 2%%a"

String s2 = res.getString(R.string.str, null);
// s2 == "%a + %a == 2%a"

xml과 코드가 없으면 정확히 무엇이 문제인지 말하기 어렵지만 이것이 메커니즘을 조금 더 잘 이해하는 데 도움이 되기를 바랍니다.

리소스의 형식화된 문자열을 사용하여 앱을 허용하려면 xml을 수정해야 합니다.그래서 예를 들면

<string name="app_name">Your App name, ver.%d</string>

로 교체되어야 합니다.

<string name="app_name">Your App name, ver.%1$d</string>

자세한 내용은 보실 수 있습니다.

%%를 XML 파서에 사용하여 %를(를) 탈출할 수 있지만 장치에 두 번 표시됩니다.

한 번 보여주려면 다음과 같은 형식을 사용해 보십시오.\%%

예를들면

<string name="zone_50">Fat Burning (50\%% to 60\%%)</string> 

로 표시됩니다.Fat Burning (50% to 60%)장치로

사용하다

<string name="win_percentage">%d%% wins</string>

갖기 위해

80% wins형식화된 문자열로서

사용하고 있습니다.String.format()대신 번호를 삽입하는 방법%d.

% 기호에서 벗어나려면 %%만 있으면 됩니다.

예를 들어 다음과 같습니다.

String.format("%1$d%%", 10)

"10%"를 반환합니다.

strings.xml 파일에서는 원하는 유니코드 기호를 사용할 수 있습니다.

예를 들어 퍼센트 기호의 유니코드 번호는 0025입니다.

<string name="percent_sign">&#x0025;</string>

유니코드 기호의 포괄적인 목록은 여기에서 볼 수 있습니다.

정확히 당신의 문제가 아니라 비슷한 문제입니다.

문자열 항목에 두 개 이상의 형식이 있는 경우 "%s"를 여러 번 사용해서는 안 됩니다.

하지 않음:

<string name="entry">Planned time %s - %s (%s)</string>

DO:

<string name="entry">Planned time %1$s - %2$s (%3$s)</string>

%%의 %를(를) xml로 탈출할 수 있지만 레이아웃 xml이 아닌 코드로 텍스트를 설정해야 합니다.

까다로운 방법: 아래와 같이 작은 백분율 부호를 사용합니다.

 <string name="zone_50">Fat Burning (50&#65130; to 60&#65130;)</string> 

위키피디아의 퍼센트 기호

이것은 IDE가 지나치게 엄격해지는 경우일 수 있습니다.

일반적으로 대체 변수의 순서를 지정하여 다른 언어에 대한 리소스를 추가할 경우 자바 코드를 변경할 필요가 없도록 해야 합니다.그러나 이와 관련하여 두 가지 문제가 있습니다.

먼저 다음과 같은 문자열이 있습니다.

You will need %.5G %s

2.1200 mg이 필요한 만큼의 양은 항상 과학적으로 그 순서에 따라 표현되는 것과 같은 순서를 언어로 가질 것입니다.

두 번째는 기본 리소스가 지정된 언어(예: 영어)에 변수의 순서를 지정하면 기본 언어와 다른 순서를 사용할 수 있는 언어에 대한 리소스 문자열의 위치만 지정하면 됩니다.

좋은 소식은 이것이 고치기 쉽다는 것입니다.입장을 명시할 필요도 없고, IDE가 지나치게 엄격해도 어쨌든 명시만 하면 됩니다.위의 예에서는 다음을 사용합니다.

%1$이(가) 필요합니다.5G %2$s

이것(오른쪽)을 사용해 보십시오.

<string name="content" formatted="false">Great application %s  ☞  %s  ☞  %s \\n\\nGo to download this application %s</string>

Google 공식 문서에 따라 %1$s 및 %2$s http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling 을 사용합니다.

안녕하세요 %1$s!%2$d개의 새 메시지가 있습니다.

저는 좀 다른 사건이 있었습니다.현지화 웹사이트에서 자체 XML 파일을 생성하고 있었는데 장치에 두 배 %% 사인을 표시하지 않으면 보풀 체크가 작동하지 않습니다.String을 사용하지 않고 percent sign을 사용하여 lint 오류를 받았습니다.체재를 갖추다

않는 % 하지 를 % 으로 으로 를 로 교체했습니다.\u0025

백슬래시를 아래와 같이 앞에 사용해 보십시오.

\%

언급URL : https://stackoverflow.com/questions/4414389/android-xml-percent-symbol

반응형