2013-11-30 2 views
2

У меня есть 3 слоя, все из них RelativeLayouts или на его основе:андроид: layout_centerInParent/RelativeLayout

  1. содержание класса

  2. покрышка класса

  3. инфобокс-макет

В моем коде я создаю объект Overlay, который раздувает инфобокс-макет. И затем я добавляю Overlayer в Content-Layer. Моя цель - центрировать (вертикально и горизонтально) информационное поле в родительском (= наложение), но оно не работает. Это TOP/LEFT. По-моему, это поведение по умолчанию. Итак, вот мой код. добавить оверлейный к Content-Layer, как это:

private void openContent (String url,final ContentLayer content) { 
    overlay = new Overlay(context, url); 
    content.addView(overlay); 
} 

Вот оверлейный:

public class Overlay extends RelativeLayout { 

    // some stuff 

    public Overlay(Context context, String url) { 
    super(context); 
    this.context = context; 
    this.url = url; 
    init(context, null, -1); 
    } 


    private void init(Context context, AttributeSet attrs, int defStyle) { 
    this.setTag(context.getResources().getString(R.string.overlay)); 
    RelativeLayout.LayoutParams lp =  new RelativeLayoutout.LayoutParams(LayoutParams.MATCH_PARENT, 
        LayoutParams.MATCH_PARENT); 

    this.setLayoutParams(lp); 
    this.setBackgroundColor(context.getResources().getColor(R.color.black)); 
    this.getBackground().setAlpha(80); 
    isMax = getValueInPrefs(); 
    inflateLayout(); 

    } 

private void inflateLayout() { 
    String service = Context.LAYOUT_INFLATER_SERVICE; 
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(service); 
    inflater.inflate(R.layout.infobox_wrapper, this, true); 

} 
// some stuff 
} 

И последнее, но не менее важно, вот мой инфобокс-макет, называется infobox_wrapper.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/epaper_webview_wrapper" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerInParent="true"> <!-- DOESN'T WORK!! --> 

    <RelativeLayout 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:background="@color/grau_actionbar"> 
     <Button 
     android:id="@+id/header_button_close" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:text="X" 
     android:layout_alignParentRight="true" 
     android:layout_margin="5dp"/> 
     <Button 
     android:id="@+id/header_button_min_max" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:text="M" 
     android:layout_toLeftOf="@id/header_button_close" 
     android:layout_margin="5dp"/> 
    </RelativeLayout> 
    <RelativeLayout 
     android:id="@+id/webview_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/grau_actionbar" 
     android:layout_below="@id/header"> 
     <WebView 
     android:id="@+id/epaper_webview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
    </RelativeLayout> 

</RelativeLayout> 

Я благодарен за любую помощь или намек.

+0

К сожалению, я забыл: Привет ребята!! :-) –

+0

Никто не может дать мне слово совета? –

ответ

1

Я решил проблему так: Я удалил андроид: layout_centerInParent = "истина" в RelativeLayout (@ + идентификатор/epaper_webview_wrapper) и установить его динамически в OpenContent-метод:

private void openContent (String url,final ContentLayer content) { 
    overlay = new Overlay(context, url); 
    RelativeLayout epaper_webview_wrapper= (RelativeLayout)overlay.findViewById(R.id.epaper_webview_wrapper); 
    RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)epaper_webview_wrapper.getLayoutParams(); 
    lp.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
    epaper_webview_wrapper.setLayoutParams(lp); 
    content.addView(overlay); 
}