Программно установить TextColor виджета на основе пользовательского ввода - PullRequest
0 голосов
/ 06 мая 2019

Я хочу создать виджет часов, в котором пользователь из своего приложения может установить 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>

1 Ответ

0 голосов
/ 06 мая 2019

вы можете попробовать это ..

сначала добавьте свой цвет в файл color.xml

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

и замените эту строку -

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

до

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