根据用户输入以编程方式设置小部件的setTextColor

时间:2019-05-06 09:43:19

标签: android android-widget textcolor

我想制作一个时钟小部件,用户可以从其应用程序中根据自己的意愿设置textColor。 因此,我想在用户点击时以编程方式动态更改TextClock的文本颜色。

我尝试使用简单的setTextColor()方法,但是没有设置小部件文本颜色的方法。 下面是我尝试过的代码,但是在用户单击(触摸)时它使应用程序崩溃了。

我希望文本的颜色随用户的触摸而改变(可以在任何ButtonImageView上)。

package com.example.demowidget;

import android.graphics.Color;
import android.graphics.PorterDuff;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextClock;

public class MainActivity extends AppCompatActivity {

TextClock tctClock;
ImageView imgIcon;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgIcon = findViewById(R.id.imgIcon);
tctClock = findViewById(R.id.tctClock);
imgIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {                    
                   tctClock.getBackground().setColorFilter(Color.parseColor("#000000"), PorterDuff.Mode.SRC_ATOP);
}
});


}
}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/widget_margin">

<TextClock
android:id="@+id/tctClock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/widget_back"
android:fontFamily="@font/lato"
android:padding="10dp"
android:textColor="#11AB6B"
android:textSize="36sp" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

您可以尝试这样做。

首先在color.xml文件中添加颜色

<color name="your_color">#094D92</color>

并替换此行-

tctClock.setTextColor(Color.parseColor("#094D92"));

tctClock.setTextColor(getResources().getColor(R.color.your_color))