2016-04-29 3 views
0

У меня есть следующий макет в файле mylayout.xml.Как отобразить Относительное содержание макета в верхней части экрана

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="@color/yellow" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="2dp" 
    android:id="@+id/Layout5" 
    android:layout_alignParentTop="true" 
    android:layout_gravity="top" 
    android:gravity="top" 
    android:orientation="vertical"> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/Layout6" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:gravity="top"> 

    <ImageView 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:background="@color/green" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:layout_marginTop="5dp" 
     android:id="@+id/imageView" 
     android:layout_gravity="center_horizontal" /> 

    <LinearLayout 
     android:id="@+id/linear_layout" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" 
     android:layout_below="@+id/imageView"> 


     <Button 
      android:id="@+id/btn1" 
      android:layout_width="0dip" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:text="@string/text_btn_1" 
      /> 

     <Button 
      android:id="@+id/btn2" 
      android:layout_width="0dip" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:text="@string/text_btn_2" 
      /> 
     </LinearLayout> 
    </LinearLayout> 
</RelativeLayout> 

При такой схеме, когда я делаю setContentView (R.layout.mylayout) для моей деятельности, которая имеет прозрачную тему, мой макет становится отображается в центре экрана.

Я хочу изменить динамическое расположение этой схемы, так что работает центр (по умолчанию) и нижний (с использованием следующего кода).

LinearLayout lLayout = (LinearLayout) findViewById(R.id.Layout6); 
    RelativeLayout.LayoutParams relativeParas = (RelativeLayout.LayoutParams) lLayout.getLayoutParams(); 
    relativeParas.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    lLayout.setLayoutParams(relativeParas); 

Но почему-то я не могу понять, как отображать этот макет динамически в верхней части экрана.

Любая помощь будет оценена по достоинству.

+1

делают андроида: layout_width и Android: layout_height равно match_parent –

+0

попробовать "relativeParas.addRule (RelativeLayout.ALIGN_PARENT_TOP);" – Nilabja

+0

Просто Определите тему в манифесте, для которой когда-либо вы хотите отображать содержимое сверху. Он удаляет строку заголовка и охватывает весь экран. android: theme = "@ android: style/Theme.Black.NoTitleBar" и сделать атрибуты layout_width и Height для match_parent или fill_parent в xml-файле. – Tara

ответ

0

Я нашел следующее решение этой проблемы. Я добавил компоновку заливки в конце в соответствии с относительной компоновкой.

Для отображения в центре ничего не делайте.

Чтобы отобразить в верхнем использовании следующий код. Просто переместите макет заливки на дно.

LinearLayout lLayout = (LinearLayout) findViewById(R.id.filler); 
    RelativeLayout.LayoutParams relativeParas = (RelativeLayout.LayoutParams) lLayout.getLayoutParams(); 
    relativeParas.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    lLayout.setLayoutParams(relativeParas); 

Для отображения внизу используйте следующий код. т. е. переместить layout6 на дно.

LinearLayout lLayout = (LinearLayout) findViewById(R.id.Layout6); 
    RelativeLayout.LayoutParams relativeParas = (RelativeLayout.LayoutParams) lLayout.getLayoutParams(); 
    relativeParas.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    lLayout.setLayoutParams(relativeParas); 
0

Попробуйте удалить правило, сделанные вами ранее (настройка его для выравнивания дна), и добавить новое правило:

//your code. 
LinearLayout lLayout = (LinearLayout) findViewById(R.id.Layout6); 
RelativeLayout.LayoutParams relativeParas = (RelativeLayout.LayoutParams) lLayout.getLayoutParams(); 
relativeParas.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
lLayout.setLayoutParams(relativeParas); 

//remove rule 
relativeParas.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
relativeParas.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
lLayout.setLayoutParams(relativeParas); 

Обратите внимание, что removeRule() доступен из API 17 года.

+0

это не сработало. Я уже пробовал и сделал это снова после вашего предложения. – Gourav

+0

В настоящее время, где находится макет? –

+0

с изменением кода, он остается в центре. – Gourav

0

Попробуйте изменить следующим образом:

layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/Layout5" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginLeft="5dp" 
       android:layout_marginRight="5dp" 
       android:background="@color/yellow" 
       android:padding="2dp" 
       android:paddingLeft="5dp" 
       android:paddingRight="5dp"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="5dp" 
     android:background="@color/green"/> 

    <LinearLayout 
     android:id="@+id/linear_layout" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_below="@+id/imageView" 
     android:orientation="horizontal"> 


     <Button 
      android:id="@+id/btn1" 
      android:layout_width="0dip" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="button1" 
      /> 

     <Button 
      android:id="@+id/btn2" 
      android:layout_width="0dip" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="button2" 
      /> 
    </LinearLayout> 
</RelativeLayout> 

класс:

RelativeLayout Layout5 = (RelativeLayout)findViewById(R.id.Layout5); 
Layout5.setGravity(Gravity.BOTTOM); 
+0

У меня проблема отображается в верхней половине экрана. В любом случае я уже пробовал Gravity Bottom. – Gourav