android - 使用图层列表定义一个可绘制对象,该图层列表中有一个高度为一半的项目

标签 android android-widget

我在我的可绘制文件夹中实现了以下按钮样式:

<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 高度。但是,无论按钮的高度如何,我都希望第二个项目始终处于高度的一半。有什么想法吗?

最佳答案

在@Tyler 的帮助下,我找到了一种更简单的方法:

LayerDrawable layerList = (LayerDrawable)getResources().getDrawable(R.drawable.btn_background).mutate();                
btnBlackLayerList.setLayerInset(0, 0, 0, btnHeight/2);
btn.setBackground(layerList);

关于android - 使用图层列表定义一个可绘制对象,该图层列表中有一个高度为一半的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15125054/

相关文章:

android - MapFragment 和 Mapview API v2

android - 在 Mac for Android 上交叉编译 "Hello World"

android - 如何强制更新配置 Activity ?

android - Alarmmanager - 每分钟发生火灾警报

java - 在 Android 代码中访问网站并检索生成的图像

android - 可过滤搜索 View 上的大黑框

java - 如何修复 Unboxing 可能会在 firebase 中产生 nullPointer Exception?

android - Android应用程序从后台转到前台时如何获得回调?

android - viewpager 中的 ViewFlipper

android - 在布局中水平分布优雅的按钮