以编程方式调整ImageView的大小

时间:2015-08-24 21:10:44

标签: android android-imageview image-resizing

我试图调整ImageView对象的大小。

问题在于,当我以编程方式设置宽度/高度时,我会在eclipse中看到调试工具的宽度/高度变化。

但是,图像不会缩放到新尺寸,并保持其当前比率。在某些情况下,它甚至将原始图像置于其当前大小,并且移动到不同的活动将(有些)正确地调整它的大小。

截图:

打开应用程序后 http://imgur.com/ha9s9rL

打开和关闭其他活动后 http://imgur.com/DrBIJaI

我希望图像彼此相邻,每张图像的宽度/高度相同。

onCreate()方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_behavior);

    listView = (ListView) findViewById(R.id.display_behavior_listview);

    List<Behavior> behaviorList = parseCatagories();
    List<View> views = getCatagoryViewsFromBehaviorList(behaviorList);

    // Setup array adapter
    BehaviorRow behaviorRows[] = getBehaviorRows(views);

    int viewCount = 0;
    View view;
    for (BehaviorRow row : behaviorRows) {

        if (viewCount < views.size()) {
            view = views.get(viewCount);
            row.setBehaviorOne(view);
            viewCount++;

            view = views.get(viewCount);
            row.setBehaviorTwo(view);
            viewCount++;
        }

        Log.i("BehaviorRowDat", row.toString());
    }

    BehaviorRowAdapter adapter = new BehaviorRowAdapter(getApplicationContext(), R.layout.catagory_row,
            behaviorRows);

    listView.setAdapter(adapter);

}

onWindowFocusChanged()方法:

@Override
public void onWindowFocusChanged(boolean hasFocus) {

    super.onWindowFocusChanged(hasFocus);
    ImageView catagoryOne;
    ImageView catagoryTwo;

    for (int i = 0; i < listView.getChildCount(); i++) {
        catagoryOne = (ImageView) listView.getChildAt(i).findViewById(R.id.catagory_space_one);
        catagoryTwo = (ImageView) listView.getChildAt(i).findViewById(R.id.catagory_space_two);

        resizeImageView(catagoryOne);
        resizeImageView(catagoryTwo);
    }
}

调整图片代码大小:

private ImageView resizeImageView(ImageView image) {

    // Set length/width
    int length = calculateLengthOfImages();
    image.getLayoutParams().height = length;
    image.getLayoutParams().width = length;

    // Set Padding
    int padding = calculatePaddingOfImages();
    image.setPadding(padding, padding, padding, padding);
    return image;
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/catagory_row_created"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="horizontal"
    android:padding="10dp"
    android:weightSum="1" >

    <ImageView
        android:id="@+id/catagory_space_one"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:contentDescription="@string/catagory_placeholder"
        android:scaleType="centerCrop" />

    <ImageView
        android:id="@+id/catagory_space_two"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:adjustViewBounds="true"
        android:contentDescription="@string/catagory_placeholder"
        android:scaleType="centerCrop" />

</LinearLayout>

0 个答案:

没有答案