ANbuttonカスタムスタイル&&AN selectorとshapeの使用

5546 ワード

1、まずbuttonカスタムの例を並べます:shapeラベルのみの使用
<?xml version="1.0" encoding="UTF-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <!--   --> 
    <solid android:color="#4169E1" /> 
    <!--   --> 
    <!-- android:radius   --> 
    <corners android:radius="5dip" /> 
      
<!-- padding:Button Button  --> 
<padding 
   android:left="20dp" 
   android:top="5dp" 
   android:right="20dp" 
   android:bottom="5dp" 
/> 
</shape>

この新しいxmlファイル(search_btn_shape)はdrawableフォルダに置いてありますが、どのように参照しますか?
<Button
            android:id="@+id/btnSearch"
            android:layout_width="wrap_content"
            android:layout_height="38dp"
            android:background="@drawable/search_btn_shape"
            android:text="@string/btnSearch" />

2、selectorについては、コンポーネントに焦点があり、焦点がなく、クリック時に表現されるスタイルを設定するのによく使われています.ここでも例を示します.
<?xml version="1.0" encoding="UTF-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!--  -->

    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false"

        android:drawable="@android:color/transparent" />

    <item android:state_focused="false" android:state_selected="true" android:state_pressed="false"

        android:drawable="@drawable/grid_focus" />



    <!--  -->

    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false"

        android:drawable="@drawable/grid_focus" />

    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false"

        android:drawable="@drawable/grid_focus" />



    <!--  -->

    <item android:state_pressed="true" android:drawable="@drawable/grid_focus" />

</selector>

3、selectorとshapeの組み合わせはどう言いますか.
方法1:実は例2のandroid:drawable=「?」で、ここの?完全にshapeにあげることができます.xmlに代わって、コンビネーションが完了しました.
方法2:itemラベルにshapeラベルを直接含んでもよい.例として、(出典)
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:Android="http://schemas.android.com/apk/res/android"> 
    <item Android:state_selected="true"> 
        <shape> 
            <gradient Android:angle="270" android:endColor="#99BD4C" 
                android:startColor="#A5D245" /> 
            <size Android:height="60dp" android:width="320dp" /> 
            <corners android:radius="8dp" /> 
        </shape> 
    </item> 
    <item Android:state_pressed="true"> 
        <shape> 
            <gradient Android:angle="270" android:endColor="#99BD4C" 
                android:startColor="#A5D245"/> 
            <size Android:height="60dp" android:width="320dp" /> 
            <corners android:radius="8dp" /> 
        </shape> 
    </item> 
    <item> 
        <shape> 
            <gradient Android:angle="270" android:endColor="#A8C3B0" 
                android:startColor="#C6CFCE"  /> 
            <size Android:height="60dp" android:width="320dp" /> 
            <corners android:radius="8dp" /> 
        </shape> 
    </item> 
</selector> 

4、ではshapeタグにはどんな属性がありますか?(この部分はネットから抜粋:出典)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <!--   -->
    <corners
        android:radius="9dp"
        android:topLeftRadius="2dp"
        android:topRightRadius="2dp"
        android:bottomLeftRadius="2dp"
        android:bottomRightRadius="2dp"/><!--   -->
    
    <!--   -->
    <gradient
        android:startColor="@android:color/white"
        android:centerColor="@android:color/black"
        android:endColor="@android:color/black"
        android:useLevel="true"
        android:angle="45"
        android:type="radial"
        android:centerX="0"
        android:centerY="0"
        android:gradientRadius="90"/>
    
    <!--   -->
    <padding
        android:left="2dp"
        android:top="2dp"
        android:right="2dp"
        android:bottom="2dp"/><!--   -->
    
    <!--   -->
    <size
        android:width="50dp"
        android:height="50dp"/><!--   -->
    
    <!--   -->
    <solid
        android:color="@android:color/white"/><!--   -->
    
    <!--   -->
    <stroke
        android:width="2dp"
        android:color="@android:color/black"
        android:dashWidth="1dp"
        android:dashGap="2dp"/>
    
</shape>

PS:権利侵害があれば私に連絡して削除してください