在膨胀视图上更改形状-Android
我有以下形状: 1) quizgenerallanswershape.xml:在膨胀视图上更改形状-Android,android,android-layout,android-studio,android-inflate,Android,Android Layout,Android Studio,Android Inflate,我有以下形状: 1) quizgenerallanswershape.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:radius="100dp"/> <g
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners android:radius="100dp"/>
<gradient
android:angle="45"
android:centerX="35%"
android:startColor="#E8E8E8"
android:centerColor="#7995A8"
android:endColor="#000000"
android:type="linear"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="270dp"
android:height="60dp"
/>
<stroke
android:width="3dp"
android:color="#878787"
/>
我想在视图对象中单击时给出一个quizrightanswershape形状。这怎么可能?我想到的一个解决方案是删除旧形状并使用旧视图的特定参数(如文本)膨胀新形状,但我认为这是不对的,一点也不快。这很容易。您正在将常规形状设置为按钮的背景,对吗?是的,那么,使用findViewById在布局中查找按钮,然后附加OnClickListener,在其中您将使用setBackground或setBackgroundDrawable来更改按钮的背景形状。为什么不简单地更改按钮的背景 您可以通过以下简单方式进行更改:
mButton.setBackground(getResources().getDrawable(R.drawable.yourShape));
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" >
<item android:state_pressed="true" android:state_focused="true">
<shape>
<gradient
android:startColor="#f00"
android:endColor="#f00"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#eee"/>
<corners
android:radius="3dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#ccc"
android:endColor="#ccc"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#ccc"/>
<corners
android:radius="3dp" />
</shape>
</item>
</selector>
如果您想更改按钮形状,如果用户单击按钮,如果不再次按下按钮,请使用旧形状,以便您可以使用如下形状:
mButton.setBackground(getResources().getDrawable(R.drawable.yourShape));
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" >
<item android:state_pressed="true" android:state_focused="true">
<shape>
<gradient
android:startColor="#f00"
android:endColor="#f00"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#eee"/>
<corners
android:radius="3dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#ccc"
android:endColor="#ccc"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#ccc"/>
<corners
android:radius="3dp" />
</shape>
</item>
</selector>
太棒了。。我想再次给我的东西充气,谢谢!
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" >
<item android:state_pressed="true" android:state_focused="true">
<shape>
<gradient
android:startColor="#f00"
android:endColor="#f00"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#eee"/>
<corners
android:radius="3dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#ccc"
android:endColor="#ccc"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#ccc"/>
<corners
android:radius="3dp" />
</shape>
</item>
</selector>