2016-10-10 37 views
0

在我的android應用程序中,我想讓我的按鈕變成綠色和圓角矩形,當有人按下按鈕時,它應該將顏色更改爲灰色。所以我創建了一個帶有選擇器的XML文件,並將其賦予圓角矩形的形狀,但問題在於當我啓動我的應用程序時,默認情況下顏色不是綠色,而是透明。此外,當我按下按鈕時,它顯示矩形形狀,所以我認爲shapre也不起作用。這是我的主要顏色:形狀和選擇器不工作

<color name="colorPrimary">#669900</color> 

我custom_button.xml

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent"> 
     <item android:state_focused="true" android:state_pressed="false" android:color="@color/colorPrimary" android:drawable="@color/colorPrimary"> 
     <shape 
      android:shape="rectangle" android:padding="10dp"> 
      <solid android:color="@color/colorPrimary"/> 
      <corners 
       android:bottomRightRadius="15dp" 
       android:bottomLeftRadius="15dp" 
       android:topLeftRadius="15dp" 
       android:topRightRadius="15dp"/> 
     </shape> 
    </item> 
     <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient" > 
      <shape 
       android:shape="rectangle" android:padding="10dp"> 
       <corners 
        android:bottomRightRadius="15dp" 
        android:bottomLeftRadius="15dp" 
        android:topLeftRadius="15dp" 
        android:topRightRadius="15dp"/> 
      </shape> 
     </item> 
     <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient" > 
      <shape 
       android:shape="rectangle" android:padding="10dp"> 
       <corners 
        android:bottomRightRadius="15dp" 
        android:bottomLeftRadius="15dp" 
        android:topLeftRadius="15dp" 
        android:topRightRadius="15dp"/> 
      </shape> 
     </item> 
    </selector> 

而且我已經做了XML文件梯度是gradient.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
      <gradient android:angle="90" 
       android:startColor="#880f0f10" 
       android:centerColor="#880d0d0f" 
       android:endColor="#885d5d5e"/> 
     </shape> 
    </item> 
</layer-list> 

回答

0

要進入四捨五入的矩形,你可以試試下面的代碼:

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item> 
      <shape 
       android:shape="rectangle"> 
       <corners 
        android:radius="5dp"/> 
       <stroke 
        android:width="2dp" 
        android:color="@color/border_of_rectangle"/> 
       <solid 
        android:color="@color/color_inside_rectangle"/> 
      </shape> 
     </item> 
    </layer-list> 
0

我做了什麼類似之前這裏是我怎麼做

button.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/button_default" android:state_pressed="false" android:state_focused="false"/> 
    <item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/button_pressed" android:state_focused="true" /> 
</selector> 

button_default.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners 
     android:radius="@dimen/radius" /> 
    <solid 
     android:color="?attr/colorAccent" /> 
    <padding 
     android:bottom="10dp" 
     android:left="10dp" 
     android:right="10dp" 
     android:top="10dp" 
     /> 
</shape> 

button_pressed.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners 
     android:radius="@dimen/radius" /> 
    <solid 
     android:color="?attr/colorAccent" /> 
    <padding 
     android:bottom="10dp" 
     android:left="10dp" 
     android:right="10dp" 
     android:top="10dp" 
     /> 
</shape> 

值/ styles.xml

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 

     <item name="android:buttonStyle">@style/BlueButton</item> 
    </style> 

    <style name="BlueButton" parent="android:style/Widget.Button"> 
     <item name="android:background">@drawable/button</item> 
     <item name="android:textColor">@drawable/button_text_color</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">18sp</item> 
    </style> 

</resources> 

我也猜你可能需要改變文字顏色,所以這裏是文件 button_text_color .XML

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="?attr/colorPrimaryDark" android:state_pressed="false" android:state_focused="false"/> 
    <item android:color="?attr/colorAccent" android:state_pressed="true"/> 
    <item android:color="?attr/colorAccent" android:state_focused="true" /> 
</selector>