android - Bagaimana untuk mengawal warna strok bentuk melalui kod?
習慣沉默
習慣沉默 2017-06-27 09:19:00
0
2
1019

1. Ini ialah fail gaya xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 角度 -->
    <corners android:radius="2dp"/>
    <!-- 填充色 -->
    <solid  android:color="#ffffff"/>
    <!-- 描边 设置线宽及颜色 -->
    <stroke android:color="@color/colorAccent"
        android:width="1dp"/>
</shape>

2 Gunakan gaya ini dalam searchView


      <android.support.v7.widget.SearchView
            android:id="@+id/searchView_singer"
            android:layout_width="match_parent"
            android:layout_height="46dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/searviewtest"
            />

3 Untuk keperluan, kini warna stroke perlu dikawal dalam kod iaitu warna gaya boleh ditukar secara dinamik Warna tidak wujud dalam
color.xml, dan tidak boleh ditukar menggunakan tema

4.Minta tolong...

習慣沉默
習慣沉默

membalas semua(2)
巴扎黑

Dapatkan objek GradientDrawable melalui searchView.getBackground() (jika Paparan ditetapkan kepada latar belakang Bentuk).

Kemudian hanya tetapkan strok secara dinamik melalui drawable.setStroke(1, Color.RED). Parameter pertama 1 mewakili lebar, dan yang kedua ialah warna.

大家讲道理
Drawable background = imageView.getBackground();
if (background instanceof ShapeDrawable) {
    ((ShapeDrawable)background).getPaint().setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
} else if (background instanceof GradientDrawable) {
    ((GradientDrawable)background).setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
} else if (background instanceof ColorDrawable) {
    ((ColorDrawable)background).setColor(ContextCompat.getColor(mContext,R.color.colorToSet));
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan