如何从选择器更改textView颜色

发布于 2024-12-23 21:40:07 字数 282 浏览 1 评论 0原文

我有带有 textView 的 LinearLayout 。

我已经从选择器中设置了 LinearLayout 背景

android:background="@drawable/tab_bg_selector"

,所以当按下布局时它会更改背景颜色

我的问题是如何在按下布局时更改文本颜色

我需要类似 onStateChangeListner 的东西,所以当用户按下布局时它也会更改文本颜色

谢谢,

托默

I have LinearLayout with textView.

I have set the LinearLayout background from selector

android:background="@drawable/tab_bg_selector"

so when pressing the layout it change the background color

my problem is how to change the text color also when pressing the layout

I need something like onStateChangeListner, so when user press the layout it also change the text color

thanks,

Tomer

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

梦忆晨望 2024-12-30 21:40:07

重复如何在以下情况下使形状的子 TextView 变为白色state_pressed="true" 这几乎是正确的答案。 licateParentState="true" 将父级 ListView 选择状态传输到子级 TextView。以下对我有用:

<TextView
    android:duplicateParentState="true"
    android:textColor="@drawable/text_selector"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

和 text_selector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:color="@color/text_on" /> <!-- pressed -->
    <item android:state_focused="true"
        android:color="@color/text_on" /> <!-- focused -->
    <item android:color="@color/text_off" /> <!-- default -->
</selector>

Duplicate of How to make shape's child TextView white when state_pressed="true" which is pretty much the correct answer. duplicateParentState="true" transfers the parent ListView selection state to the TextView child. The following worked for me:

<TextView
    android:duplicateParentState="true"
    android:textColor="@drawable/text_selector"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

and the text_selector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:color="@color/text_on" /> <!-- pressed -->
    <item android:state_focused="true"
        android:color="@color/text_on" /> <!-- focused -->
    <item android:color="@color/text_off" /> <!-- default -->
</selector>
别念他 2024-12-30 21:40:07

的 onClick 中;

将其放入布局textview.setTextColor(color)

put this in onClick of Layout

textview.setTextColor(color);

粉红×色少女 2024-12-30 21:40:07

只需尝试使用此代码 -

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
public void clickme(View view)
{
    TextView tv = (TextView)findViewById(R.id.textView1);
    tv.setTextColor(Color.RED);             
}

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:onClick="clickme"
android:orientation="vertical" >


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

使用您的选择器尝试此操作。

Just try with this code -

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
public void clickme(View view)
{
    TextView tv = (TextView)findViewById(R.id.textView1);
    tv.setTextColor(Color.RED);             
}

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:onClick="clickme"
android:orientation="vertical" >


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

Try this with your Selector.

信愁 2024-12-30 21:40:07

您可以通过两种方式为textview设置颜色
使用 xml 标签“android:textcolor=”colorvalue”
或者
通过java代码中的“textview object.setTextColor(colorname)”方法设置颜色。

You can set color to textview in two ways
using xml tag "android:textcolor="colorvalue"
or
set color by the method "textview object.setTextColor(colorname)" in java code.

吐个泡泡 2024-12-30 21:40:07

因为只有一个解决方案
首先创建两个具有不同颜色背景和文本颜色的图像
第二个是设置选择器,就像您在上面应用的那样

android:background="@drawable/tab_bg_selector"

它绝对有效

in that there is one solution
First create the two images in different color background with text color
second is set the selector as you to apply in above like

android:background="@drawable/tab_bg_selector"

its definatly works

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文