我想在按下按钮时更改按钮的背景颜色和文本颜色(它应该保持在状态,直到再次按下按钮)。如果再次按下,我需要旧的按钮状态。 任何人都可以帮助我
以下是我试过的代码
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/beco_white"
android:layout_marginTop="@dimen/dp10"
android:orientation="horizontal">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/button_oberon_mall"
android:layout_width="92dp"
android:layout_height="30dp"
android:layout_marginLeft="@dimen/dp10"
android:minWidth="92dp">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/blue_rounded_corner_new"
android:text="Oberon Mall"
android:fontFamily="sans-serif-regular"
android:textAllCaps="false"
android:textColor="@color/beco_black"
android:textSize="13sp"/>
</FrameLayout>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/button_centre_square_mall"
android:layout_width="134dp"
android:layout_height="30dp"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginRight="@dimen/dp10"
android:minWidth="134dp">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/blue_rounded_corner_new"
android:text="Centre Square Mall"
android:fontFamily="sans-serif-regular"
android:textAllCaps="false"
android:textColor="@color/beco_black"
android:textSize="13sp"/>
</FrameLayout>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/button_lulu_mall"
android:layout_width="81dp"
android:layout_height="30dp">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/blue_rounded_corner_new"
android:text="Lulu Mall"
android:fontFamily="sans-serif-regular"
android:textAllCaps="false"
android:textColor="@color/beco_black"
android:textSize="13sp"/>
</FrameLayout>
</FrameLayout>
</LinearLayout>
blue_round_corner_new.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false">
<shape android:shape="rectangle">
<!--apply button background transparent, full opacity-->
<solid android:color="#dedfe0"/>
<corners android:radius="15dp"/>
</shape>
</item >
<item
android:state_pressed="true">
<shape android:shape="rectangle">
<!--apply button background transparent, full opacity-->
<solid android:color="#4990d0"/>
<corners android:radius="15dp"/>
</shape>
</item>
在此代码中,按下背景颜色只会暂时改变(不保留状态)
任何人帮助我。对不起我的英文
答案 0 :(得分:2)
我认为最好的选择是为每个按钮实现onTouchListener。
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_DOWN:
break;
}
return false;
}
});
当你得到ACTION_UP或ACTION_DOWN时,你只需要改变背景
答案 1 :(得分:1)
答案 2 :(得分:0)
有两种方法可以在屏幕上放置XML(您已使用过)或以编程方式。 尝试将blue_round corner.xml放在程序调用中,如果你想长时间保持(我认为你有多个屏幕并且切换屏幕保持按下按钮的状态)然后在onResume()函数中调用相同的保留它。
我认为它会起作用,如果您需要更多帮助,请发表评论