2013-12-26 5 views
2

Это мой MainActivity XML файл:addView не работает (RelativeLayout)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/testingView" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
tools:context=".TestingActivity" > 

Это файл .java:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.testing_activity); 

     RelativeLayout viewOne = (RelativeLayout) findViewById(R.id.testingView); 
     RelativeLayout viewTwo = new RelativeLayout(this); 

     viewTwo.setId(5233); 
     viewTwo.setBackgroundColor(0xFF0000); 

Затем я попытался добавить этот код (и многие другие и то же, разными способами, с разными и фиксированными размерами, но никто из них не работал):

 viewTwo.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 

В конце:

 viewOne.addView(viewTwo); 

Пробовал добавить это тоже, но не получилось:

 viewTwo.bringToFront(); 

Я вижу белый фон с Hello World! текст. Любое решение?

+0

setContentView (R.layout.testing_activity); измените значение setcontentview на R.layout.mainactivity –

+1

u уверен, что вы задаете параметры для viewTwo правильно? Я думаю, что они должны быть параметрами Relative Layout. между viewTwo нет содержимого. ваши параметры макета - wrap_content. он ничего не покажет. попробуйте изменить его на fill_parent только для подтверждения. –

+0

@AshwinSAshok, моя деятельность называется test_activity. У меня нет активности с этим именем: mainactivity. – Dehumanizer

ответ

2
viewTwo.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT)); 

Попробуйте это. Поскольку viewTwo не имеют ребенка, вы ничего не увидите. Попробуйте установить другой backgroundColor для viewTwo.

viewTwo.setBackgroundColor(Color.RED); 
+0

Я уже пробовал это. Это был первый, который я пробовал, но не работал. Я не знаю, что еще я могу сделать. – Dehumanizer

+0

Пробовал с красным и черным, и этот код тоже: viewTwo.setVisibility (RelativeLayout.VISIBLE); – Dehumanizer

+0

Отправьте свой полный код. – Triode

0

RelativeView является контейнер для хранения вид внутри него, конечно, это также вид, и вы можете добавить вложенные взгляды, а также.

Как когда-либо, когда вы правы некоторые вещи, как это:

viewTwo.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 

Вы говорите Ваш взгляд, чтобы быть с шириной это дети. Так как вы не добавили ни одного ребенка, к тому мнению, с будет 0.

0

использование RelativeLayout вместо LinearLayout

viewTwo.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)) 
0

Попробуйте this-

viewTwo.setBackgroundColor(getResources().getColor(Color.RED));

Updated-

Создайте шаблон для вашего динамического вида, например относительный макет.

createa xml в папке res/layout - relative_view_template.xml и скопируйте код ниже.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#ff0000" 
    /> 

и ваше использование класса этот код -

RelativeLayout relativeLayout = (RelativeLayout)((Activity) context).getLayoutInflater().inflate(R.layout.relative_view_template, null); 

это работает для меня, пожалуйста, попробуйте это.

+0

Когда я пытаюсь это сделать, приложение аварийно завершает работу. Но я не думаю, что это что-то о цвете фона, поскольку я тоже пытался добавить изображение. – Dehumanizer

+0

Вы также можете добавить изображение, используя тот же getResources(). GetDrawable(). Imagename – Ravi

+0

, пожалуйста, проверьте обновленный ответ – Ravi

Смежные вопросы