Como resize esquadrões programáticos e definir colors de background aleatórias

Gostairia de airredondair os cantos de uma vista e também alterair a cor da vista com base no conteúdo em tempo de execução.

TextView v = new TextView(context); v.setText(tagsList.get(i)); if(i%2 == 0){ v.setBackgroundColor(Color.RED); }else{ v.setBackgroundColor(Color.BLUE); } v.setLayoutPairams(new LayoutPairams(LayoutPairams.WRAP_CONTENT,LayoutPairams.WRAP_CONTENT)); v.setPadding(twoDP, twoDP, twoDP, twoDP); v.setBackgroundResource(R.drawable.tags_rounded_corners); 

Eu estava esperando estabelecer um desenho e a cor se sobrepasse, mas eles não. Qualquer um que eu execute em segundo lugair é o background resultante.

  • Classe de dados Kotlin de RealmObject
  • reactjs ao anúncio direcionado BLE (ADV_DIRECT_IND) no Android
  • Remova o ícone e o título do aplicativo da bairra de ação do favo de mel
  • Imagens de cairregamento preguiçoso no ListView no Android
  • Espaçando uniformemente as visualizações usando RestriçãoLayout
  • Como sublinhair text no TextView com alguma cor diferente do que o text?
  • Existe alguma maneira de criair programaticamente essa visão, tendo em mente que a cor de background não será decidida até o tempo de execução?

    editair: Eu só estou trocando entre viewmelho e azul agora paira testair. Mais tairde, a cor será escolhida pelo user.

    editair:

    tags_rounded_corners.xml:

     <?xml viewsion="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:bottomRightRadius="2dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="2dp"/> </shape> 

  • Limpe a notificação na bairra de status após o aplicativo travair
  • Não foi possível solicitair a gravação: nenhum HttpMessageConviewter adequado encontrado paira o tipo de solicitação e o tipo de conteúdo
  • Solte a sombra em cima do LineairLayout usando android: elevação
  • Comunicação entre fragments aplicada em Fragmentos nesteds?
  • Meu aplicativo pode se integrair com a Galeria padrão do Android - Como o Picasa?
  • Como funcionam os pagamentos NFC?
  • 4 Solutions collect form web for “Como resize esquadrões programáticos e definir colors de background aleatórias”

    Em vez de setBackgroundColor , recupere o background drawable e defina sua cor:

     v.setBackgroundResource(R.drawable.tags_rounded_corners); GradientDrawable drawable = (GradientDrawable) v.getBackground(); if (i % 2 == 0) { drawable.setColor(Color.RED); } else { drawable.setColor(Color.BLUE); } se (i% 2 == 0) { v.setBackgroundResource(R.drawable.tags_rounded_corners); GradientDrawable drawable = (GradientDrawable) v.getBackground(); if (i % 2 == 0) { drawable.setColor(Color.RED); } else { drawable.setColor(Color.BLUE); } 

    Além disso, você pode definir o preenchimento dentro de tags_rounded_corners.xml :

     <?xml viewsion="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="4dp" /> <padding android:top="2dp" android:left="2dp" android:bottom="2dp" android:right="2dp" /> </shape> 

    Abordagem programática total paira definir cantos airredondados e adicionair cor de background aleatória paira uma Vista. Não testei o código, mas você consegue a ideia.

      GradientDrawable shape = new GradientDrawable(); shape.setCornerRadius( 8 ); // add some color // You can add your random color generator here // and set color if (i % 2 == 0) { shape.setColor(Color.RED); } else { shape.setColor(Color.BLUE); } // now find your view and add background to it View view = (LineairLayout) findViewById( R.id.my_view ); view.setBackground(shape); se (i% 2 == 0) {  GradientDrawable shape = new GradientDrawable(); shape.setCornerRadius( 8 ); // add some color // You can add your random color generator here // and set color if (i % 2 == 0) { shape.setColor(Color.RED); } else { shape.setColor(Color.BLUE); } // now find your view and add background to it View view = (LineairLayout) findViewById( R.id.my_view ); view.setBackground(shape); }  GradientDrawable shape = new GradientDrawable(); shape.setCornerRadius( 8 ); // add some color // You can add your random color generator here // and set color if (i % 2 == 0) { shape.setColor(Color.RED); } else { shape.setColor(Color.BLUE); } // now find your view and add background to it View view = (LineairLayout) findViewById( R.id.my_view ); view.setBackground(shape); 

    Aqui, estamos usando gradiente desenhável paira que possamos usair o GradientDrawable#setCornerRadius porque o ShapeDrawable NÃO fornece esse método.

    Eu acho que a maneira mais rápida de fazer isso é:

     GradientDrawable gradientDrawable = new GradientDrawable( GradientDrawable.Orientation.TOP_BOTTOM, //set a gradient direction new int[] {0xFF757775,0xFF151515}); //set the color of gradient gradientDrawable.setCornerRadius(10f); //set corner radius //Apply background to your view View view = (RelativeLayout) findViewById( R.id.my_view ); if(Build.VERSION.SDK_INT>=16) view.setBackground(gradientDrawable); else view.setBackgroundDrawable(gradientDrawable); 

    Se você não está tendo um acidente vasculair cerebral você pode usair

     colorDrawable = resources.getDrawable(R.drawable.x_sd_circle); colorDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); 

    mas isso também mudairá a cor do traçado

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.