Я хочу создать виджет часов, в котором пользователь из своего приложения может установить textColor
по своему желанию.
Поэтому я хочу динамически и программно изменять цвет текста TextClock при нажатии пользователем.
Я пытался использовать простой метод setTextColor()
, но такого метода для настройки цвета текста виджета не существует.
Ниже приведен код, который я пробовал, но приложение щелкнуло по прикосновению (коснитесь).
Я ожидаю, что цвет текста изменится при прикосновении пользователя (это может быть любой Button
или ImageView
).
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>