如何在android studio中缩放可用于不同屏幕大小的自定义按钮?

如何在android studio中缩放可用于不同屏幕大小的自定义按钮?,android,xml,Android,Xml,我已使用以下xml文件创建了一个可绘制的自定义按钮: button.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:state_enabled="true"

我已使用以下xml文件创建了一个可绘制的自定义按钮:

button.xml

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@drawable/button_pressed" />
    <item
        android:state_enabled="true"
        android:drawable="@drawable/button_enabled"/>
</selector>

但是,我的问题出现在使用标记时。当然,这会导致不同屏幕上的按钮大小相同。有没有一种方法可以使我可以缩放此绘图表,使其在不同的屏幕上具有不同的大小?

我知道的最简单的方法是为不同的屏幕大小创建多个xml文件

为此,

res
文件夹中,右键单击
drawable
文件夹

转到新建->可绘制资源文件

应显示以下表格:

将名称设置为与其他名称完全相同

但要添加一个资格认证者:

这将为该特定大小创建一个新文件夹和xml文件

对这些文件夹中的每个xml文件进行更改,以获得正确的缩放比例

编辑:

发现于


您正在使用android studio吗?是的。我将编辑我的问题以澄清这一点。你真的需要
size
标记在
drawable
xml
s中吗?我不这么认为。但是没有它,我不知道如何设置按钮的大小。为什么不使用约束布局?在布局代码中。它会根据屏幕大小动态展开按钮,并给出正确的限制条件?谢谢。但什么才算是小屏幕、大屏幕等呢?@JDSal检查我的编辑,来自android。com@JDSal如果此答案正确,请按旁边的绿色复选标记,以便具有相同问题的其他用户知道如何解决此问题。谢谢,太好了。非常感谢。
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size
        android:width="70dp"
        android:height="70dp"/>
    <gradient
        android:startColor="#000000"
        android:centerColor="#000000"
        android:endColor="#000000"
        android:angle="90"/>
    <padding android:left="3dp"
        android:top="3dp"
        android:right="3dp"
        android:bottom="3dp" />
    <stroke
        android:width="3dp"
        android:color="#05B402" />
</shape>
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <size
        android:width="70dp"
        android:height="70dp" />
    <gradient
        android:startColor="#FFFFFF"
        android:centerColor="#FFFFFF"
        android:endColor="#FFFFFF"
        android:angle="90"/>
    <padding android:left="3dp"
        android:top="3dp"
        android:right="3dp"
        android:bottom="3dp" />
    <stroke
        android:width="3dp"
        android:color="#05B402" />
</shape>
Button b = new Button(getActivity());
b.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.button));