gpt4 book ai didi

android - 按下按钮一次后如何更改文本颜色 (Android)

转载 作者:太空狗 更新时间:2023-10-29 12:39:23 24 4
gpt4 key购买 nike

我基本上想做的是:当我点击按钮时,我希望它的文本颜色以不同的颜色出现。我试过的是这样的:

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/red" />
<item
android:state_pressed="false"
android:color="#000" />
</selector>

然后我确实在按钮 android:textColor 上使用了这个选择器作为可绘制对象

但这并不能解决问题,因为它只会在我按下按钮时改变颜色。我想要这样:默认值:黑色点击:蓝色再次点击:黑色

任何想法如何做到这一点? :S

这是我的按钮形状(如果重要的话):

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetBottom="-1dp"
android:insetLeft="-1dp"
android:insetRight="-1dp">
<selector>
<item android:state_pressed="false">
<shape android:shape="rectangle" >
<corners
android:radius="0dp"
/>
<solid
android:color="@color/background_grey"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="100dp"
android:height="30dp"
/>
<stroke
android:width="1dp"
android:color="#ffb4b4b4"
/>
</shape>
</item>

<item android:state_pressed="true">
<shape android:shape="rectangle" >
<corners
android:radius="0dp"
/>
<solid
android:color="@color/pq_blue"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="100dp"
android:height="30dp"
/>
<stroke
android:width="1dp"
android:color="#ffb4b4b4"
/>
</shape>
</item>
</selector>
</inset>

提前谢谢

编辑

所以我尝试以编程方式执行此操作并绑定(bind)以下内容只是为了看看它是否会改变颜色..但是是的..它不会(似乎我的 onCLick 事件不起作用):

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.listview_item, container, false);



final Button likeButton = (Button)rootView.findViewById(R.id.btLike);
likeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String test = "tester";
if(BUTTON_STATE==BUTTON_STATE_ONCE){

likeButton.setTextColor(getResources().getColor(R.color.pq_blue));
BUTTON_STATE = BUTTON_STATE_TWICE;
}else{
likeButton.setTextColor(getResources().getColor(R.color.red));
BUTTON_STATE = BUTTON_STATE_ONCE;
}

}
});
return rootView;
}

注意:我在 onCreateView 中做了所有事情,因为我在我的 ActionBarActivity 的一个 fragment 中(带有选项卡)如果我在 onCreate 中这样做,我在 findViewById 得到一个空指针异常(因为它在我的 mainActivity 中搜索 ID,如果我是对的?)

是的..有什么想法吗?

最佳答案

你的 textselector.xml -

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/red" /> <!--selected text colour-->
<item
android:state_focused="true"
android:color="@color/red" />
<item
android:color="@color/blue" /> <!--unselected text colour-->
</selector>

layout.xml 中的按钮 -

<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exit"
android:textColor="@drawable/textselector" <!-- SET textselector HERE -->
android:background="@drawable/button_color"/>

关于android - 按下按钮一次后如何更改文本颜色 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28558164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com