我在drawable文件夹中实现了以下按钮样式:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item>
<shape
android:shape="rectangle"
>
<stroke android:width="1dp" android:color="#FF666666" />
<corners
android:radius="@dimen/corner_radius"
/>
<solid
android:color="#FF000000"
/>
</shape>
</item>
<item
android:bottom="22dp" android:top="1dp" android:left="1dp" android:right="1dp"
>
<shape
android:shape="rectangle"
>
<corners
android:topLeftRadius="@dimen/corner_radius" android:topRightRadius="@dimen/corner_radius"
/>
<solid
android:color="#10FFFFFF"
/>
</shape>
</item>
</layer-list>
我的问题是我想把第二个项目设置在一半的高度,相对而言,不是绝对的。你可以看到我在这里设置'android:bottom =“22dp”',因为我的按钮通常是45dp的高度。但是,我希望第二项始终处于高度的一半,无论我的按钮高度如何。有什么想法吗?
答案 0 :(得分:3)
在@ Tyler的帮助下,我找到了一种更简单的方法:
LayerDrawable layerList = (LayerDrawable)getResources().getDrawable(R.drawable.btn_background).mutate();
btnBlackLayerList.setLayerInset(0, 0, 0, btnHeight/2);
btn.setBackground(layerList);
答案 1 :(得分:2)
您必须以编程方式执行此操作。
android:id
属性。getResouces().getDrawable()
获取对图层列表和第二个项目的引用。请务必将图层列表转换为LayerDrawable
。Drawable.mutate()
和第二项LayerDrawable
上致电Drawable
。Drawable.setBounds()
相应地修改第二层的绘图矩形。LayerDrawable.setDrawableByLayerId()
替换图层列表中更新的Drawable
。