如何以编程方式更改可绘制的形状大小?

时间:2014-07-20 09:07:03

标签: android xml shape

如何以编程方式更改宽度和高度,以便形状适合它运行的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 个答案:

答案 0 :(得分:3)

使用如下,

在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 :(得分: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"

修改

您可以使用以下代码获取px中显示的大小:

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

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

然后您可以获得某个显示的相对大小,并使用上面的答案以编程方式更改drawable的大小。希望它有所帮助:D