如何避免在Android中拉伸图像

时间:2013-07-19 12:25:39

标签: android android-layout

我试图以编程方式放置图像。但是当我放置图像时,它们会被拉伸。我正在使用Micromax Canvas来查看我的应用程序。

这是我的代码

void populateData(){
        populate=(LinearLayout)findViewById(R.id.populate);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        params.weight=1.0f;

        for(int i=0;i<10;i++) {
            LinearLayout hr_populate=new LinearLayout(this);
            hr_populate.setOrientation(LinearLayout.HORIZONTAL);

            ImageView img=new ImageView(this);
            img.setBackgroundResource(R.drawable.spicejet);

            img.setLayoutParams(params);
            ImageView img1=new ImageView(this);
            img1.setBackgroundResource(R.drawable.book);
            img1.setLayoutParams(params);
            ImageView img2=new ImageView(this);
            img2.setBackgroundResource(R.drawable.arrow);
            img2.setLayoutParams(params);

            TextView text = new TextView(this);
            text.setText("BOS");
            text.setLayoutParams(params);
            TextView text1 = new TextView(this);
            text1.setText("SAN");
            text1.setLayoutParams(params);
            TextView text2 = new TextView(this);
            text2.setText("6h15m");
            text2.setLayoutParams(params);
            TextView text3 = new TextView(this);
            text3.setText("32,163");
            text3.setLayoutParams(params);

            LinearLayout book_div = new LinearLayout(this);
            book_div.setOrientation(LinearLayout.VERTICAL);
            book_div.setLayoutParams(params);

            book_div.addView(text3);
            book_div.addView(img1);

            hr_populate.addView(img);
            hr_populate.addView(text);
            hr_populate.addView(text1);
            hr_populate.addView(text2);
            hr_populate.addView(book_div);
            hr_populate.addView(img2);
            populate.addView(hr_populate);
        }
    }

这是我的XML代码

<ScrollView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_below="@+id/sortFlightLayouts">

        <LinearLayout android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/populate"
            android:orientation="vertical">
        </LinearLayout>

    </ScrollView>

请建议我从这个问题中做出哪些改变

2 个答案:

答案 0 :(得分:2)

尝试将ImageView的scaleType设置为fitCenter。以下是不同比例类型的一个很好的例子:http://etcodehome.blogspot.com/2011/05/android-imageview-scaletype-samples.html

答案 1 :(得分:0)

正如nspace建议的那样,您可以为ImageView设置ScaleType。您可以使用ImageView的setScaleType()方法。

eg. imageView.setScaleType(ScaleType.FIT_CENTER);

缩放图像有多种选择。您可以从ScaleType课程中获取所有类型。

<强>更新

不使用设置图像背景,而是使用ImageView的setImageResource方法设置图像绘制,然后根据需要应用上面的缩放代码。

即: 删除:img.setBackgroundResource(R.drawable.spicejet);

添加:imag.setImageResource(R.drawable.spicejet);