2015-09-03 3 views
0

Я накачивания вид в моем activty как этотДобавить Layout Params для просмотра программно - Java

View myView = getLayoutInflater().inflate(R.layout.my_view, my_activity_layout); 

А теперь я хочу, чтобы центрировать MyView в регулярном макете

Я попробовал этот

RelativeLayout.LayoutParams layoutParams = 
          (RelativeLayout.LayoutParams)myView.getLayoutParams(); 
        layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
        myView.setLayoutParams(layoutParams); 

Но получил эту ошибку

android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams 

Как я мог бы сосредоточить этот взгляд?

Благодаря

EDIT

Вот мой XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="200dp" android:layout_height="250dp" 
android:id="@+id/discountView" > 
    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Discount:" 
    android:id="@+id/discountTitleText" 
    android:layout_marginTop="20dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:textSize="24sp" 
    android:textColor="#ffffff" /> 
+0

изменения 'RelativeLayout' в' FrameLayout' и установить тяжести к центру – Rustam

+0

причина вы будете использовать RelativeLayout вместо FrameLayout. Поэтому измените relativelayout на framelaout в параметрах макета. –

ответ

0

Заменить FrameLayout.LayoutParams вместо этого, если RelativeLayout.LayoutParams.

ИЛИ

Вы должны изменить FrameLayout к RelativeLayout в my_view.xml файле

+0

Ya my xml-файл - это относительный макет см. В редакторе – spenf10

0

Что здесь ошибка? Чтобы понять это, Вы должны понять, как создается иерархия вид/ViewGroup для этого см: http://android-developers.blogspot.in/2009/03/android-layout-tricks-3-optimize-by.html

Так что, если вы идете на ваш взгляд на самом деле у вас есть FrameLayout -> RelativeLayout -> TextView Решение Вместо от использования

RelativeLayout.LayoutParams layoutParams = 
         (RelativeLayout.LayoutParams)myView.getLayoutParams(); 
       layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
       myView.setLayoutParams(layoutParams); 

использование

FrameLayout.LayoutParams layoutParams = 
         (FrameLayout.LayoutParams)myView.getLayoutParams(); 
       layoutParams.addRule(//your code); 
       myView.setLayoutParams(layoutParams); 

или же получить RelativeLayout с вашей точки зрения

RelativeLayout rootLayout = myView.findViewById(R.id.discountView); 
//And using RelativeLayout params as you have done 
rootLayout.setLayoutParams(layoutParams) 
Смежные вопросы