RelativeLayout宽度需要与其中最大图像相同的宽度

时间:2012-04-18 09:18:57

标签: android relativelayout

我的相对布局包含不同相对布局和视图的图层。在一个孩子的相对布局中,我添加了尺寸为2400 * 480,1600 * 480和920 * 480的图像。现在我希望这些图像保持原始尺寸,但是当我将它们添加到相对布局时它们会缩小以适应屏幕的宽度和高度,并且当它们缩小时它们也保持纵横比。 下面是我的XML和添加ImageViews的代码。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
        /* Some other layouts */
    <RelativeLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"                      
        android:id="@+id/parallaxLayers"        
        android:visibility="gone">      
    </RelativeLayout>
    /* Viewgroup */    
</RelativeLayout>

RelativeLayout parallaxLayout = (RelativeLayout)findViewById(R.id.parallaxLayers);

private void addParallaxLayers() {
        // TODO Auto-generated method stub
        InputStream s1 = getResources().openRawResource(R.drawable.parallax_layer1);
        InputStream s2 = getResources().openRawResource(R.drawable.parallax_layer2);
        InputStream s3 = getResources().openRawResource(R.drawable.parallax_layer3);
        InputStream s4 = getResources().openRawResource(R.drawable.parallax_layer4);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        System.gc();
        bitmap = bitmap(s1);
        layer1Back = new ImageView(this);       
        layer1Back.setImageBitmap(bitmap);
        parallaxLayout.addView(layer1Back, 0, lp);
        try {
            s1.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        bitmap = null;
        s1 = null;
        System.gc();

        bitmap = bitmap(s2);
        layer2Back = new ImageView(this);
        layer2Back.setImageBitmap(bitmap);
        parallaxLayout.addView(layer2Back, 1, lp);
        try {
            s2.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        bitmap = null;
        s2 = null;
        System.gc();

        bitmap = bitmap(s3);
        layer3Back = new ImageView(this);
        layer3Back.setImageBitmap(bitmap);
        parallaxLayout.addView(layer3Back, 2, lp);
        try {
            s3.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        bitmap = null;
        s3 = null;
        System.gc();

        bitmap = bitmap(s4);
        layer4Back = new ImageView(this);
        layer4Back.setImageBitmap(bitmap);
        parallaxLayout.addView(layer4Back, 3, lp);
        try {
            s4.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        bitmap = null;
        s4 = null;
        System.gc();
    }

如果这些图像必须调整相对布局大小,如何使这些图像符合其原始大小?

3 个答案:

答案 0 :(得分:0)

为每个ImageView尝试此行:

 layer2Back.setScaleType(ScaleType.FIT_XY);

我不确定。

答案 1 :(得分:0)

我认为更像是:

layer2Back.setScaleType(ScaleType.FIT_CENTER);

答案 2 :(得分:0)

我最终使用了带有framelayout的Horizo​​ntalScrollView来将图像视图放在彼此之上。

<HorizontalScrollView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fadingEdge="none">
            <FrameLayout android:layout_width="wrap_content"
                android:layout_height="fill_parent"                   
                android:id="@+id/parallaxLayers"        
                android:visibility="gone">      
            </FrameLayout>
        </HorizontalScrollView>