3

これは情報ウィンドウである私のレイアウトで、ユーザーに表示する新しい情報がある場所に表示されます。

レイアウトは、透明な背景色と小さなテキスト レイアウトで画面全体を占める必要があります。

<?xml version="1.0" encoding="utf-8"?>
<!-- info fragment - used by the fragment to provide info on a specific fragment -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.coapps.pico"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background_dark_green" >

    //this is the only layout i see in the result. not it's parent's layout...
    <RelativeLayout
        android:id="@+id/fragment_info_relativelayout_info"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:layout_alignParentTop="true"
        android:background="@drawable/background_info_window"
        android:clickable="true" >

        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerInParent="true"
            android:layout_margin="5dp" >

            <!-- The info textView -->

            <com.coapps.pico.NillanTextView
                android:id="@+id/fragment_info_textview_info"
                style="@style/text_shadow_black"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:gravity="left"
                android:text="Some Text "
                android:textColor="@android:color/white"
                app:isBold="true" />
        </ScrollView>
        <!-- Tap to close -->

        <com.coapps.pico.NillanTextView
            android:id="@+id/fragment_info_textview_tap_to_close"
            style="@style/text_shadow_black"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:gravity="right"
            android:paddingRight="5dp"
            android:text="@string/button_tap_to_close"
            android:textColor="@android:color/white"
            app:isBold="true" />
    </RelativeLayout>

</RelativeLayout>

このレイアウトを次のように別の ViewGroup に追加しています。

/**
 * Show the info window
 */
public void show()
{
    //if the window is not visible
    if (!isVisible())
        //add window's view
        rootView.addView(infoWindowView);
}

このコードは、最後のインデックスのルート ビュー コンテナーに情報ウィンドウを追加します。

その結果、テキストを含む2番目のRelativeLayoutしか表示されませんが、透明であるはずの親ルートレイアウトが表示されません...

理由はありますか?

更新: これは私のコンテナです:

<?xml version="1.0" encoding="utf-8"?>
<!-- This is the main layout of the application -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_basic_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</RelativeLayout>
4

3 に答える 3

0

また、相対レイアウトのサイズに依存する相対レイアウトのビューにも問題がありました。内部ビューのサイズを更新することで、この問題を問題なく解決しました

private void update viewSize()
if(rootContainer == null || rootContainer.getLayoutParams() == null)
return;
rootContainer.measure(View.MeasureSpec.makeMeasureSpec(ScalingUtil.getScreenSize().getWidth(), View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.EXACTLY));

    RelativeLayout.LayoutParams oldLayoutParams = (RelativeLayout.LayoutParams) rootContainer.findViewById(R.id.deals_card_center_bg).getLayoutParams();
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(rootContainer.getMeasuredWidth(), rootContainer.getMeasuredHeight());
    layoutParams.setMargins(oldLayoutParams.leftMargin, oldLayoutParams.topMargin, oldLayoutParams.rightMargin, oldLayoutParams.bottomMargin);

    rootContainer.findViewById(R.id.deals_card_center_bg).setLayoutParams(layoutParams);
于 2014-01-23T14:27:13.207 に答える
-1

変更してみる

<RelativeLayout
        android:id="@+id/fragment_info_relativelayout_info"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:layout_alignParentTop="true"
        android:background="@drawable/background_info_window"
        android:clickable="true" >

<RelativeLayout
        android:id="@+id/fragment_info_relativelayout_info"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:background="@drawable/background_info_window"
        android:clickable="true" >

とにかく、なぜネストが必要なのRelativeLayoutですか?

ビューを追加する方法がわかったので、これも試してください:

infoWindowView.setLayoutParams(
       new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
rootView.addView(infoWindowView);
于 2013-10-17T15:46:22.307 に答える