Eu tenho um arquivo de fonte ttf na minha pasta de ativos. Eu sei como usá-lo para visualizações de texto com:
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
Eu defini a aparência do meu texto giratório em seu próprio arquivo xml (como de costume no Android):
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />
Eu simplesmente não consigo fazer referência a este textview do código, sempre recebo exceções de ponteiro nulo. Por exemplo, eu tentei:
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
É possível selecionar minha fonte externa até mesmo para meu texto giratório definido em seu próprio xml?
Obrigado.
EDITAR com resposta:
Isso funciona:
String [] items = new String[2];
items[0]="Something1";
items[1]="Something2";
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.spinaca, items) {
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
return v;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v =super.getDropDownView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
v.setBackgroundColor(Color.GREEN);
return v;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Pode ser necessário adicionar
import android.view.ViewGroup;
Para sua lista de importações no topo do seu arquivo. Por algum motivo, o Eclipse não faz essa sugestão quando não reconhece a classe ViewGroup envolvida no código.
android
fonts
spinner
android-spinner
android-fonts
DixieFlatline
fonte
fonte
Respostas:
Isso é o que funcionou para mim (usando ideias das respostas de CommonsWare e gsanllorente ):
Se você, como eu, preencheu originalmente o Spinner usando
ArrayAdapter.createFromResource()
e um recurso de matriz (como na documentação do Spinner ), você usaria MySpinnerAdapter assim:fonte
assignAdapterWithOptions(Spinner spinner, int textArrayResId)
método, obtendo o contextospinner.getContext()
e atribuindo o adaptador ao spinner dentro dele (os layouts do spinner são permanentes para todo o meu aplicativo)Você aplicaria a fonte por meio de seu próprio costume
SpinnerAdapter
, emgetView()
egetDropDownView()
.fonte
android.view.ViewGroup
, provavelmenteSe você implementar seu Adaptador em outro arquivo, poderá acessar a função "getAssets ()" do construtor do Adaptador, pois tem o Contexto como parâmetro.
fonte
findViewById(R.id.text1)
não parecia encontrar o TextView, embora o ID estivesse correto. Alguns outros problemas neste código: 1) declaração de retorno ausente emgetView()
, 2) campo não utilizadorecurso
, 3) alguns problemas de estilo como nomear uma variávelspinner_text
(deveria serspinnerText
). Aqui está o que funcionou para mim .Experimente criar custom_spinner.xml personalizado
Crie CheckedtextView personalizado como este
implemente o novo layout
fonte
Esta é a continuação da minha resposta anterior: https://stackoverflow.com/a/51100507/787399
Etapa 1: declare item_spinner.xml
etapa 2: declare item_spinner_dropdown.xml:
Etapa 3: use o botão giratório no layout:
[Observação: o id do FontTextView é o mesmo nos layouts, item giratório e item suspenso]
Etapa 4: use-o na atividade / fragmento:
[para obter mais orientações, consulte minha outra postagem: https://stackoverflow.com/a/51077569/787399 e https://stackoverflow.com/a/22164007/787399 ]
fonte
Siga a personalização básica de FontTextView, FontEditView, FontRadioButton, FontCheckBox e FontButton.
[Para a resposta exata, depois de ver este guia, consulte: https://stackoverflow.com/a/51113022/787399 ]
Use FontTextView personalizado, no layout do item ArrayAdapter, como este:
use o código:
Descreva o estilo e os atributos nos respectivos xmls:
e
defina mais alguns estilos:
mencione fontes em suas strings.xml:
e usar nos layouts economizando algum código e tempo:
No Android nível 16 e acima, tudo isso é simplificado, porque agora você pode manter TTF e outros recursos de fonte na
/res/font
pasta, em vez de ativos. Isso remove a maioria das classes, estilos e atributos personalizados, consulte:Recursos de fonte no Android
Feliz codificação com estilo !! :-)
fonte
Pessoal eu encontrei uma solução incrível, eu envolvo adaptador orignal por ajudante
Use esta classe SpinnerViewHelper e feliz programação com Android
A expressão lambda é usada.
fonte