cari

Rumah  >  Soal Jawab  >  teks badan

android - Bagaimana untuk mengawal warna strok bentuk melalui kod?

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...

習慣沉默習慣沉默2750 hari yang lalu1030

membalas semua(2)saya akan balas

  • 巴扎黑

    巴扎黑2017-06-27 09:21:00

    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.

    balas
    0
  • 大家讲道理

    大家讲道理2017-06-27 09:21:00

    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));
    }

    balas
    0
  • Batalbalas