Eu tenho que concatenar essas duas seqüências de caracteres dos meus arquivos de recurso / valor:
<string name="Toast_Memory_GameWon_part1">you found ALL PAIRS ! on </string>
<string name="Toast_Memory_GameWon_part2"> flips !</string>
Eu faço assim:
String message_all_pairs_found = getString(R.string.Toast_Memory_GameWon_part1)+total_flips+getString(R.string.Toast_Memory_GameWon_part2);
Toast.makeText(this, message_all_pairs_found, 1000).show();
Mas os espaços no final da primeira corda e no início da segunda corda desapareceram (quando o Toast é mostrado) ...
O que devo fazer ?
Eu acho que a resposta está em algum lugar aqui neste link de documentação
ou é algo como usar & ;
para o caractere "&" ??
android
string-concatenation
Hubert
fonte
fonte
Respostas:
Mesmo se você usar a formatação de string, às vezes você ainda precisará de espaços em branco no início ou no final da string. Para esses casos, nem escapar com
\
, nemxml:space
atributo ajuda. Você deve usar a entidade HTML 
para um espaço em branco.Use
 
para espaço em branco inquebrável.Use
 
para espaço regular.fonte
 
e não recebi nenhum erro de compilação, mas meu espaço ainda era ignorado. 
funcionou, mas não quero um espaço em branco inquebrável. Eu quero apenas um espaço regular.\u0020
trabalhou.Eu tive o mesmo problema. Eu queria deixar um espaço em branco no final de uma sequência de recursos representando um nome de campo na tela.
Encontrei uma solução para este relatório de problema: https://github.com/iBotPeaches/Apktool/issues/124
Essa é a mesma idéia que Duessi sugere. Insira
\u0020
diretamente no XML um espaço em branco que você gostaria de preservar.Exemplo:
A substituição é feita no tempo de compilação, portanto, não afetará o desempenho do seu jogo.
fonte
\u0020
é o ESPAÇO do código ASCII. Essa foi a melhor escolha para o meu projeto, pois eu tinha que ter certeza de que era ASCII.Esta documentação sugere que a citação funcione:
fonte
<string name="my_str_spaces">" Before <b>and</b> after? "</string>
Enclose the entire string in double quotes ("This'll work", for example)
onde ele discute como escapar de umSingle quote (')
.Eu apenas uso o código UTF para o espaço "\ u0020" no arquivo strings.xml.
funciona bem. (O Android adora códigos UTF)
fonte
Essa pergunta pode ser antiga, mas a partir de agora a maneira mais fácil de fazer isso é adicionar aspas. Por exemplo:
fonte
É possível espaçar com larguras diferentes:
| ESPAÇO ESPAÇO FINO | ESPAÇO DO CABELO | sem espaço |
Visualização:
fonte
Se você realmente deseja fazer do jeito que estava fazendo, acho que precisa dizer que o espaço em branco é relevante ao escapar dele:
No entanto, eu usaria formatação de string para isso. Algo como o seguinte:
então
fonte
String.format
causa muitas alocações de memória indesejáveis em um jogo.use "" com o valor do recurso de sequência.
Exemplo: "valor com espaços"
OU
use o código \ u0020 para espaços.
fonte
Trabalhando bem, estou usando \ u0020
Arquivo Java
Captura de tela aqui Imagem da exibição Trabalhando com este código
fonte
Pode-se argumentar para adicionar o espaço programaticamente. Como esses casos serão frequentemente usados em concatenações, decidi parar a loucura e apenas fazer o que é antigo
+ " " +
. Isso fará sentido na maioria das línguas européias, eu diria.fonte
Todas as respostas aqui não funcionaram para mim. Em vez disso, para adicionar um espaço no final de uma string,
XML
eu fiz issofonte
Não tenho idéia do Android em particular, mas isso parece com o processamento usual de espaços em branco XML - os espaços em branco à esquerda e à direita dentro de um elemento geralmente são considerados insignificantes e removidos. Tente
xml:space
:fonte
xml:space
parece ser ignorado.Na verdade, isso pode não responder à pergunta (Como manter espaços em branco em XML), mas pode resolver o problema subjacente com mais facilidade.
Em vez de confiar apenas nos recursos XML, concatene usando seqüências de caracteres de formato. Então, primeiro remova os espaços em branco
E então construa sua string de maneira diferente:
fonte
Há também a solução de usar
CDATA
. Exemplo:Mas, em geral, acho que
\u0020
é bom o suficiente.fonte
Se você precisar do espaço com o objetivo de concatená-lo posteriormente com outras strings, poderá usar a abordagem de formatação de strings para adicionar argumentos à sua definição de strings:
Em seguida, para formatar a string (por exemplo, se você tiver um erro retornado pelo servidor, caso contrário, use
getString(R.string.string_resource_example)
):O que resulta em:
fonte
Não funciona com xml: space = "preserve"
então eu fiz da maneira mais rápida =>
Eu simplesmente adicionei um + "" + onde eu precisava ...
fonte