No meu aplicativo Android, estou usando o spinner e carreguei dados do banco de dados SQLite no spinner, e ele está funcionando corretamente. Aqui está o código para isso.
Spinner spinner = (Spinner) this.findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item, list);
cursor.moveToFirst();
list.add("All Lists");
if (cursor.getCount() > 0) {
for (int i = 0; i < cursor.getCount(); i++) {
keyList[i] = cursor.getString(cursor.getColumnIndex(AndroidOpenDbHelper.KEYWORD));
list.add(keyList[i]);
cursor.moveToNext();
}
}
Database.close();
cursor.close();
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
Agora, quero alterar a cor e o tamanho do texto dos dados do girador. Eu usei as seguintes linhas XML para minha tag giratória no meu arquivo XML, mas não está funcionando.
android:textColor="@android:color/white"
android:textSize="11dp"
Como posso alterar a cor e o tamanho do texto do meu spinner?
Respostas:
Crie um arquivo XML personalizado para o seu item giratório.
spinner_item.xml:
Dê sua cor e tamanho personalizados ao texto deste arquivo.
Agora use esse arquivo para mostrar seus itens giratórios como:
Você não precisa definir o recurso suspenso. Levará
spinner_item.xml
apenas para mostrar seus itens no girador.fonte
android:id="@+id/customSpinnerItemTextView"
. Se você tivesse depurado isso, saberia disso.Simples e nítido ...:
fonte
Se todos os giradores puderem ter a mesma cor de texto para os itens do TextView, outra abordagem é usar um estilo personalizado para os itens suspensos do girador:
Em
res/values/styles.xml
:E defina sua cor personalizada em res / values / colors.xml:
fonte
android:
assim<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Aqui está um link que pode ajudá-lo a alterar a cor do Spinner :
Clique aqui
Você precisa criar seu próprio arquivo de layout com uma definição personalizada para o item spinner spinner_item.xml :
Se você deseja personalizar os itens da lista suspensa, precisará criar um novo arquivo de layout. spinner_dropdown_item.xml :
E finalmente outra mudança na declaração do spinner:
É isso aí.
fonte
android:textSize="20sp"
no primeiro trecho de código é inútil: o tamanho do texto do controle é definido nospinner_item.xml
Se você trabalha com android.support.v7.widget.AppCompatSpinner, aqui está a solução mais simples testada usando estilos:
E o estilo:
A única desvantagem é o android: backgroundTint define a cor para a seta suspensa e o plano de fundo suspenso.
fonte
style="@style/Widget.AppCompat.Spinner.Underlined"
mas você tem apenasstyle name="Spinner"
...paddingStart
requer API 17,backgroundTint
requer API 21.Para evitar atrasos, você precisa não apenas definir as propriedades do texto no
onItemSelected
ouvinte, mas também noonCreate
método da Atividade (mas é um pouco complicado).Especificamente, você precisa colocar isso
onCreate
depois de configurar o adaptador:E depois coloque isso em
onItemSelected
:Aqui está um exemplo completo:
Para mais detalhes, veja minha pergunta .
fonte
Se você deseja que a cor do texto seja alterada apenas no item selecionado, isso pode ser uma solução alternativa possível. Funcionou para mim e deve funcionar para você também.
fonte
Para alguém que precisa de apenas um
Style
caminhoAppCompat
.Resultado
styles.xml
your_spinner_layout.xml
Plus
E se você deseja definir
android:entries
programaticamente com estilo definido.Tente isso.
Como no código, usar o mesmo
Context
com oSpinner
mais importante.fonte
Para alterar a cor do texto giratório:
fonte
Em vez de criar um layout personalizado para obter um tamanho pequeno, e se você quiser usar o tamanho pequeno interno do Android LAYOUT para o spinner, use:
"android.R.layout.simple_gallery_item" em vez de "android.R.layout.simple_spinner_item".
Pode reduzir o tamanho do layout do girador. É apenas um truque simples.
Se você deseja reduzir o tamanho de uma lista suspensa, use este:
fonte
A maneira mais fácil de reutilizar / alterar os recursos do Android.R.layout é apenas seguir a definição. No Android Studio, faça Ctrl+ Bno android.R.layout.simple_spinner_item.xml.
O levará ao arquivo de recurso. Apenas copie o arquivo de recurso e adicione um novo layout na pasta Package.R.layout e altere o textColor do textview como desejar e, em seguida, chame-o no adaptador como este:
fonte
Para quem quiser mudar de
DrowDownIcon
cor, você pode usar assimfonte
<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AppTheme
Drawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.md_white_1000), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); }
Pode alterar a cor do texto substituindo o método getView da seguinte maneira:
fonte
Mais simples: funciona para mim
fonte
basta usar isso:
fonte
Outra variação da solução do Ashraf seria garantir que você levasse em consideração o tamanho da tela. Você precisará colocar o botão giratório no onCreate e definir o ouvinte depois de configurar o adaptador:
Em seguida, você pode começar a alterar o tamanho do texto da exibição exibida antes do clique no botão giratório:
Tudo o que você precisa fazer é criar pastas específicas de layout como esta:
e adicione um arquivo xml chamado "bool.xml" em cada uma dessas pastas:
fonte
Primeiro, precisamos criar o
xml
arquivo de recurso simples para otextview
seguinte, como abaixo:e salve. depois de definido na lista de adaptadores.
fonte
você pode ter esse tipo de adaptador para spinner, totalmente personalizado:
enquanto R.layout.spinner_text é:
fonte
Se você deseja um método simples, para adicionar itens a uma lista suspensa, geralmente os adiciona ao strings.xml. Aqui está um exemplo de como adicionar cor usando o arquivo strings.xml:
SELECIONAR GAMA DE IDADE
fonte
Eu fiz isso da seguinte maneira: uso os métodos getDropDownView () e getView ().
Use
getDropDownView()
para o Spinner aberto.E use
getView()
para Spinner fechado.fonte
Tente este método. Está funcionando para mim.
fonte
basta adicionar um novo estilo como este:
e use-o:
fonte
isso é tudo, aproveite sua codificação ...
fonte