android - 我需要以编程方式调整表格行内 imageView 的大小

标签 android

我已经尝试调整我的 ImageView 的大小,但它无法通过位图或其他方法工作我将放置我的代码所以如果有人可以帮助我如何调整 ImageView 以适应表格行 thnx。

public class Test extends Activity
{
    private TableLayout Table1;
    protected void onCreate(Bundle savedInstanceState) 
    { 
        int[] ImageArray={R.raw.hospital_image,R.raw.hotel_image};
        super.onCreate(savedInstanceState);
        setContentView(R.layout.favorites);
        Table1 = (TableLayout) findViewById(R.id.Table);
        TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams(
                TableRow.LayoutParams.WRAP_CONTENT,
                TableRow.LayoutParams.WRAP_CONTENT, 1.0f);
        for(int i=0;i<ImageArray.length;i++)
        {
            TableRow TR = new TableRow(this);
            TR.setLayoutParams(tableRowParams);
            ImageView img=new ImageView(this);
            //What should i do here to resize it ???
            Drawable d = getResources().getDrawable(ImageArray[i]);
            img.setImageDrawable(d); 

            TR.addView(img, new TableRow.LayoutParams(
                    TableRow.LayoutParams.WRAP_CONTENT,
                    TableRow.LayoutParams.WRAP_CONTENT, 1.0f));

            Table1.addView(TR);
        }
    }

我的 XMl 只包含这些:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <TableLayout
            android:id="@+id/Table1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </TableLayout>
    </ScrollView>

</RelativeLayout>

最佳答案

试试这个,

public class ResizableImageView extends ImageView {
    public ResizableImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ResizableImageView(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        Drawable d = getDrawable();
        if (d == null) {
            super.setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
            return;
        }

        int imageHeight = d.getIntrinsicHeight();
        int imageWidth = d.getIntrinsicWidth();

        int widthSize = MeasureSpec.getSize(widthMeasureSpec);
        int heightSize = MeasureSpec.getSize(heightMeasureSpec);

        float imageRatio = 0.0F;
        if (imageHeight > 0) {
            imageRatio = imageWidth / imageHeight;
        }
        float sizeRatio = 0.0F;
        if (heightSize > 0) {
            sizeRatio = widthSize / heightSize;
        }

        int width;
        int height;
        if (imageRatio >= sizeRatio) {
            // set width to maximum allowed
            width = widthSize;
            // scale height
            height = width * imageHeight / imageWidth;
        } else {
            // set height to maximum allowed
            height = heightSize;
            // scale width
            width = height * imageWidth / imageHeight;
        }

        setMeasuredDimension(width, height);
    }
}

像普通的 ImageView 一样在您的布局中使用它,只需更改标签,就像这样,

        <com.example.ResizableImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:padding="1px"
            android:scaleType="fitCenter"
            android:src="..." />

关于android - 我需要以编程方式调整表格行内 imageView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12982404/

相关文章:

java - 如何在 andengine 中正确销毁和重建场景?

android - 如何将图库中的图像存储在 SQLite 数据库中

Android:如何在 View 中设置居中背景图片

java - 通过代码动态选择 Spinner 中的项目

android - 如何在软键盘中获得 "done"按钮?

android - 如何对齐android中的单选按钮

java - 如何?使用 Retrofit2 将当前日期从 Android 插入到 mySQL 数据库中

android - Android 垂直滚动和水平滚动

android - 如何在 android 中使用 LayoutInflater 从动态创建的 EditText 中获取数据?

android - 如何在已安装的 .apk 上运行 monkeyrunner