背景可绘制的纵横比

时间:2016-10-12 14:08:37

标签: android background drawable

我有一个来自GridView日历的单元格的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_cell"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/cell_bg"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingLeft="10dp">
    <LinearLayout
        android:id="@+id/shape_background"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
        <TextView
            android:id="@+id/tv1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"/>
        <TextView
            android:id="@+id/tv2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"/>
    </LinearLayout>
</LinearLayout>

我正在以编程方式设置一个标记为android:id="@+id/shape_background的线性布局的可绘制背景。我插入这个布局只是因为我不想要与父LinearLayout的大小相关的扭曲。你注意到我里面有2个文本视图。如果布局宽度和高度是wrap_content,我的背景会缩小到textviews内容的大小。当我设置为match_parent时,我旋转时在形状背景上发生扭曲。 下面是创建drawable及其初始化的简单代码。

public CalendarAdapter( Context context, int month, int year,
                        Map<String, Object> caldroidData,
                        Map<String, Object> extraData, int cellHeight) {
        super(context, month, year, caldroidData, extraData);
        this.cellHeight = (int)Math.floor( ( cellHeight - ( cellHeight * 0.1 ) ) /6 );
        backgroundDrawable = ContextCompat.getDrawable( context, R.drawable.ball );
    }

LinearLayout shapeBackground = ( LinearLayout )cellView.findViewById( R.id.shape_background );
backgroundDrawable.setBounds(0, 0, 90, 90);
backgroundDrawable = new ScaleDrawable( backgroundDrawable, 0, 90, 90).getDrawable();
shapeBackground.setBackground( backgroundDrawable );

这是可绘制的xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#FF0000"/>
    <size
        android:width="1dp"
        android:height="1dp"/>
</shape>

非常简单。我读了一些SO帖子并尝试了解决方案。没有成功。

部分图片: enter image description here enter image description here

Android: Scale a Drawable or background image?

How to convert a Drawable to a Bitmap?

0 个答案:

没有答案