2016-04-23 9 views
-1
私がチェックしながら、2つの異なる状態を表示する]チェックボックスをカスタマイズする必要が

、私が使用しています、次の2枚の画像:私のカスタムセレクターは次のように定義されてenter image description hereAndroidのカスタムチェックボックスセレクタ問題

enter image description here

次の:

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

しかし、調整する必要があるチェックボックスの高さと幅を変更すると、画像が正しく表示されないなど、適切な結果が得られません。その結果、私はこのようになっています:

enter image description here

完全なレイアウトは以下のとおりである:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="1"> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="74dp" 
     android:background="@drawable/bottom_bav_btn"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="80dp" 
       android:layout_height="match_parent" 
       android:id="@+id/linearLayout"> 

       <ImageView 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:id="@+id/jokeListViewBackButton" 
        android:src="@drawable/back_screen_button_normal" 
        android:layout_margin="10dp" /> 
      </LinearLayout> 

      <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_toRightOf="@+id/linearLayout" 
       android:layout_toLeftOf="@+id/linearLayout2" 
       android:layout_toStartOf="@+id/linearLayout2" 
       android:weightSum="1"> 

       <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"> 

        <TextView 
         android:layout_width="fill_parent" 
         android:layout_height="37dp" 
         android:textAppearance="?android:attr/textAppearanceLarge" 
         android:text="Large Text" 
         android:id="@+id/jokeTitleTextView" 
         android:gravity="center_vertical|center_horizontal" 
         android:textColor="@color/fontWhiteColor" /> 

        <TextView 
         android:layout_width="fill_parent" 
         android:layout_height="37dp" 
         android:textAppearance="?android:attr/textAppearanceLarge" 
         android:text="0/0" 
         android:id="@+id/jokeCountTxt" 
         android:gravity="center_vertical|center_horizontal" 
         android:textColor="@color/fontWhiteColor" /> 
       </LinearLayout> 

      </LinearLayout> 

      <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="80dp" 
       android:layout_height="match_parent" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentEnd="true" 
       android:id="@+id/linearLayout2" 
       android:gravity="center_vertical|center_horizontal"> 

       <CheckBox 
        android:layout_width="40dp" 
        android:layout_height="40dp" 
        android:id="@+id/checkBox" 
        android:button="@drawable/custom_favourite_selector" 
        android:gravity="center_vertical|center_horizontal" 
        android:checked="false" /> 
      </LinearLayout> 
     </RelativeLayout> 

    </LinearLayout> 


    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="300dp" 
     android:weightSum="1" 
     android:background="@color/listViewBody" 
     android:layout_weight="0.71"> 

     <ScrollView 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:id="@+id/scrollView" > 

      <com.gravityapps.framework.Utils.CustomTextView 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:text="" 
       android:id="@+id/jokeTextView" 
       android:layout_below="@+id/imageView" 
       android:layout_centerHorizontal="true" 
       android:gravity="center" 
       android:textSize="25dp" 
       android:layout_alignParentBottom="true" 
       android:layout_marginRight="10dp" 
       android:layout_marginLeft="10dp" /> 
     </ScrollView> 

    </LinearLayout> 

    <LinearLayout android:id="@+id/navbar" 
     android:layout_width="fill_parent" 
     android:layout_height="80dp" 
     android:orientation="horizontal"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@drawable/bottom_nav_back" 
      android:id="@+id/prevButtonLayout" 
      android:clickable="true"> 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/imageView2" 
       android:background="@drawable/previous_btn_normal" 
       android:layout_margin="15dp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@drawable/bottom_nav_back" 
      android:id="@+id/randPrevButtonLayout" 
      android:clickable="true" > 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/imageView3" 
       android:background="@drawable/reverse_btn_normal" 
       android:layout_margin="15dp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@drawable/bottom_nav_back" 
      android:id="@+id/linearLayout5" 
      android:clickable="true" > 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/imageView4" 
       android:background="@drawable/copy_btn_normal" 
       android:layout_margin="15dp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@drawable/bottom_nav_back" 
      android:id="@+id/linearLayout6" 
      android:clickable="true" > 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/imageView7" 
       android:background="@drawable/share_btn_normal" 
       android:layout_margin="15dp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@drawable/bottom_nav_back" 
      android:id="@+id/randNextButtonLayout" 
      android:clickable="true" > 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/imageView5" 
       android:background="@drawable/forward_btn_normal" 
       android:layout_margin="15dp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:clickable="true" 
      android:layout_weight="1" 
      android:background="@drawable/bottom_nav_back" 
      android:id="@+id/nextButtonLayout"> 

      <ImageView 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/imageView6" 
       android:background="@drawable/next_btn_normal" 
       android:layout_margin="15dp" /> 
     </LinearLayout> 

    </LinearLayout> 
</LinearLayout> 

私は、なぜ私はこの結果を取得していますかわかりません。どんな助けもありがとう。ありがとう

+0

なぜ**恐ろしいレイアウトのネスト**ですか? View 1つにつき1つのレイアウト????入れ子レイアウト**はパフォーマンスに悪影響を及ぼすことをご存知でしょうか?** –

+0

提案していただきありがとうございます。私は実際に開発の最終段階で最適化と洗練を行い、正しいことができるかどうかは不明です。 – aaa111

+0

あなたの画像の解像度は何ですか? –

答えて

2

サイズCheckbox 40dp *セレクタで定義した画像よりも40dp小さい。

静的な寸法の代わりにwrap_contentを使用してください。

+0

しかし、それは私のチェックボックスを大きく見せません。良い、それからチェックボックスのサイズを変更するには?イメージサイズを変更します。イメージサイズを変更せずに使用する方法が他にない場合は、 – aaa111

+1

@ aaa111 'android:button =" @ null "'を設定して、アンドロイド:background = "@ drawable/custom_favourite_selector"を追加しようとすると、これがうまくいかない場合は別の画面サイズをサポートするようにイメージのサイズを変更する必要があると思います –

+0

奇妙なこれは有効な方法ですか? – aaa111

1

以前の回答によっては、チェックボックスのサイズを大きくしたくない場合は、イメージのサイズを変更する必要があります。私はこれらがあなたの最良のオプションだと思っています。wrap_contentあなたのチェックボックスの幅と高さ、またはあなたのイメージリソースのサイズを小さくして元に戻します。 40 * 40px