J'essaie d'ajouter TextViews
à ma mise en page définie par xml dans le code. J'ai une feuille XML, où beaucoup de Views
sont définis. Mais je dois ajouter quelques vues dans le code, donc créez un LinearLayout
dans la feuille xml:
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:id="@+id/info"
Android:layout_height="wrap_content"
Android:orientation="vertical">
</LinearLayout>
Et dans cette mise en page, j'aime bien ajouter mon TextView
:
View linearLayout = findViewById(R.id.info);
//LinearLayout layout = (LinearLayout) findViewById(R.id.info);
TextView valueTV = new TextView(this);
valueTV.setText("hallo hallo");
valueTV.setId(5);
valueTV.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(valueTV);
Mais je ne reçois que le message d'erreur suivant:
: Java.lang.ClassCastException: Android.widget.TextView
Comment puis-je le faire?
Merci pour ton aide. Martin
essayez d'utiliser
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.info);
...
linearLayout.addView(valueTV);
assurez-vous également que les paramètres de disposition que vous créez sont LinearLayout.LayoutParams ...
Hey, j'ai vérifié votre code, il n'y a pas d'erreur grave dans votre code. c'est du code complet:
main.xml: -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:id="@+id/info"
Android:layout_height="wrap_content"
Android:orientation="vertical">
</LinearLayout>
c'est Stackoverflow.Java
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.ViewGroup.LayoutParams;
import Android.widget.LinearLayout;
import Android.widget.TextView;
public class Stackoverflow extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View linearLayout = findViewById(R.id.info);
//LinearLayout layout = (LinearLayout) findViewById(R.id.info);
TextView valueTV = new TextView(this);
valueTV.setText("hallo hallo");
valueTV.setId(5);
valueTV.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(valueTV);
}
}
copiez ce code et exécutez-le. c'est complètement sans erreur. prends soin de toi...
Vous pouvez ajouter un TextView
à votre structure linéaire par programme de la manière suivante:
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mylayout);
TextView txt1 = new TextView(MyClass.this);
linearLayout.setBackgroundColor(Color.TRANSPARENT);
linearLayout.addView(txt1);
for(int j=0;j<30;j++) {
LinearLayout childLayout = new LinearLayout(MainActivity.this);
LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
childLayout.setLayoutParams(linearParams);
TextView mType = new TextView(MainActivity.this);
TextView mValue = new TextView(MainActivity.this);
mType.setLayoutParams(new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1f));
mValue.setLayoutParams(new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1f));
mType.setTextSize(17);
mType.setPadding(5, 3, 0, 3);
mType.setTypeface(Typeface.DEFAULT_BOLD);
mType.setGravity(Gravity.LEFT | Gravity.CENTER);
mValue.setTextSize(16);
mValue.setPadding(5, 3, 0, 3);
mValue.setTypeface(null, Typeface.ITALIC);
mValue.setGravity(Gravity.LEFT | Gravity.CENTER);
mType.setText("111");
mValue.setText("111");
childLayout.addView(mValue, 0);
childLayout.addView(mType, 0);
linear.addView(childLayout);
}
Utilisez quelque chose de similaire pour ajouter TextView à LinearLayout de manière dynamique:
LinearLayout linearLayout = getActivity().findViewById(R.id.infoLayout);
TextView valueTV = new TextView(context);
valueTV.setText("hallo hallo");
valueTV.setId(Integer.parseInt("5"));
valueTV.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.addView(valueTV);
getActivity () est utilisé pour l'intérieur de Fragments, vous pouvez utiliser un contexte ou quelque chose de similaire pour chaque instance dans laquelle vous vous trouvez.
Vous devez accéder à la présentation via sa ressource de présentation, et non pas une ressource id qui n'est pas garantie unique. La référence de ressource devrait ressembler à R.layout.my_cool_layout où votre mise en page XML ci-dessus est stockée dans res/layout/my_cool_layout.xml.
LinearLayout.LayoutParams layoutParams ;
layoutParams= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);