如何在程序中通过编程方式更改可绘制形状的大小?

4

如何在程序中改变宽度和高度,以便形状适应正在运行的Android设备?90dp的高度适合我的设备,但我想让它适合其他设备。

这是我的shape.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/cellfilled" >

<size android:width="0dp"
    android:height="90dp" />

<solid android:color="#00000000" />

<stroke
    android:width="1dp"
    android:color="#ff000000"/>

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" />
</shape>
2个回答

4

按以下方式使用:

在drawable中创建circle.xml

<?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >


<solid android:color="#00000000" />

<stroke
android:width="1dp"
android:color="#ff000000"/>

 </shape>

并在LinearLayout中添加以下视图,其宽度和高度值如下:

View view = new View(this);
view.setBackgroundResource(R.drawable.circle);
LayoutParams params = new LayoutParams(15, 15);
view.setLayoutParams(params);
linearLayout.addView(view);

1
@Sharon182请将答案标记为正确答案,这样任何人都可以知道正确答案。 - kiran boghra
我不行。它说我的声望不够。我使用了你的答案。 - Sharon182

1
抱歉,我在用手机。你可以尝试先使用 setBounds() 方法,如果不起作用,则可以使用以下代码:
// Read your drawable from somewhere 
Drawable dr = getResources().getDrawable(R.drawable.somedrawable); 
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap(); 
// Scale it to 50 x 50 
Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 50, 50, true)); 
// Set your new, scaled drawable "d"

编辑:

您可以使用以下代码获取显示器的像素大小:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);

int width = size.x;
int height = size.y;

然后您可以获取相对于特定显示器的大小,并使用上面的答案以编程方式更改可绘制对象的大小。希望能帮到您 :D

他从哪里获取相关的大小? - Sharon182
@Sharon182,抱歉回复晚了。我已经发布了一篇编辑文章,你可以去查看一下。 - xXJJJasonMokXx
1
不用谢。你最好回答你的问题,这样其他人也可以学到一些东西 :) - xXJJJasonMokXx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接