java linearlayout are - Android: إضافة طريقة عرض نصية إلى التخطيط الخطي برمجيًا




4 Answers

جرب استخدام

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.info);
...
linearLayout.addView(valueTV);

تأكد أيضًا من أن params التخطيط الذي تقوم بإنشائه هو LinearLayout.LayoutParams ...

known gravity

أحاول إضافة TextViews إلى التنسيق المحدد بـ xml في التعليمات البرمجية. لدي ورقة xml ، حيث يتم تعريف الكثير من Views . ولكن يتعين علي إضافة بعض المشاهدات في الكود ، لذلك أنشئ خط LinearLayout في ورقة 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>

وفي هذا التنسيق ، أود أن أضيف 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);

ولكن أتلقى رسالة الخطأ التالية فقط:

: java.lang.ClassCastException: android.widget.TextView

كيف يمكنني فعل ذلك؟

شكرا لمساعدتك. مارتن




يمكنك إضافة TextView إلى تخطيط خطي برمجياً مثل هذا:

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mylayout);
TextView txt1 = new TextView(MyClass.this);
linearLayout.setBackgroundColor(Color.TRANSPARENT);
linearLayout.addView(txt1);



تحتاج إلى الوصول إلى التخطيط عبر مورد التخطيط الخاص به ، وليس مورد معرف غير مضمون فريد. يجب أن يبدو مرجع المورد مثل R.layout.my_cool_layout حيث يتم تخزين تخطيط XML أعلاه في res / layout / my_cool_layout.xml.




يجب عليك استخدام شيء مشابه لهذا لإضافة TextView إلى LinearLayout بشكل حيوي:

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 () داخل الأجزاء ، ويمكنك استخدام السياق أو أي شيء مشابه لكل مثيل تكون داخله.




Related