我有一个名为“ Dress”的RelativeLayout,其WRAP_CONTENT的LayoutParams。它里面的所有内容都是一个ImageView,因此它与ImageView的大小相同。当我在OnCreate的RelativeLayout中添加一个视图时,如下所示:

photoSorter = new MultitouchImagesView(this.getApplicationContext());
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ((ViewGroup) findViewById(id.Dress)).addView(photoSorter, params);


名为Dress的RelativeLayout会更改大小,以占用整个RootView(基本上是整个活动)减去actionbar。

我拍摄了“连衣裙布局”的屏幕截图。因此,当photoSorter处于RootLayout(而不是Dress Layout)中时,如下所示:

photoSorter = new MultitouchImagesView(this.getApplicationContext());
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        addContentView(photoSorter, params);


Layout Dress尺寸正确,我得到了以下屏幕截图:



但是我需要在“连衣裙布局”中使用PhotoSorter,以便可以将其包含在屏幕截图中,而不会出现黑条。当我像这样将photoSortr添加到Dress Layout中时:

photoSorter = new MultitouchImagesView(this.getApplicationContext());
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            ((ViewGroup) findViewById(id.Dress)).addView(photoSorter, params);


它使着装图占据了整个屏幕,因此着装图的屏幕截图如下所示:



这是我的屏幕截图代码:

public Bitmap takeScreenshot() {
        View v = findViewById(R.id.Dress);
        v.setDrawingCacheEnabled(true);
        return v.getDrawingCache();
    }


这是我的活动XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:longClickable="true"
    android:onClick="deleteImage"
    android:background="@android:color/transparent"
    tools:context=".MainActivity" >

    <RelativeLayout
        android:id="@+id/Dress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent" >

    <ImageView
        android:id="@+id/imageViewDress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:adjustViewBounds="true"
        android:background="#00CED1"
        android:padding="10dp"
        android:scaleType="centerInside" />

    </RelativeLayout>

    <com.edmodo.cropper.CropImageView
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:id="@+id/CropImageView"
    android:background="@android:color/transparent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
</RelativeLayout>


另外,当我将com.edmodo.cropper.CropImageView添加到DressLayout时,它也使Dress Layout也占据了整个活动。因此,在“连衣裙布局”中添加任何内容都会使其变得更大。

如何在不使Dress Layout占用整个活动大小的情况下将photoSorter添加到Dress Layout中?

谢谢。

最佳答案

我通过尝试使用XML进行管理。关键是将Dress与imageViewDress对齐,我可以使其他两边对齐,而不仅仅是底部。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:longClickable="true"
        android:background="@android:color/transparent"
        tools:context=".DressingRoomActivity" >

        <RelativeLayout
            android:id="@+id/DressBig"
            android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true">

            <ImageView
            android:id="@+id/imageViewDress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:adjustViewBounds="true"
            android:scaleType="centerInside" />

             <RelativeLayout
            android:id="@+id/Dress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent"
            android:layout_alignBottom="@+id/imageViewDress"
            android:layout_centerInParent="true" >
             </RelativeLayout>

        </RelativeLayout>

        <com.edmodo.cropper.CropImageView
        xmlns:custom="http://schemas.android.com/apk/res-auto"
        android:id="@+id/CropImageView"
        android:background="@android:color/transparent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    </RelativeLayout>


此XML,然后以编程方式将photoSorter添加到Dress,然后拍摄DressBig的屏幕截图。

关于android - 将 View 添加到RelativeLayout会更改其大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21278537/

10-11 20:01