2017-11-15 15 views
0

私はクリック可能な背景のセレクターxmlを作ったことが分かっています。しかし、それは誤り以下の私を与えている(アプリ:tabBackground):tabLayoutのクリック可能な背景色を変更するにはどうすればよいですか?

によって引き起こさ:android.content.res.Resources $ NotFoundException:描画可能リソースのID番号からファイルの解像度/色/ tab_selector.xml 0x7f050062

マイレイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.khash.copytimejava.MainActivity" 
    android:orientation="vertical"> 


     <android.support.design.widget.TabLayout 
      android:id="@+id/tabLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="fixed" 
      app:tabBackground="@color/tab_selector" 
      app:tabTextColor="@android:color/white" 
      app:tabTextAppearance="@style/TabLayoutTextStyle" 
      app:tabSelectedTextColor="@android:color/white"/> 

     <FrameLayout 
      android:id="@+id/frame_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 

</LinearLayout> 

私のタブセレクタのxml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/colorBlueWithAlpha" android:state_selected="true"></item> 
    <item android:color="@color/colorBlueWithAlpha" android:state_pressed="true"></item> 
    <item android:color="@color/colorPrimary"></item> 
</selector> 

私は

01を変更それが正常に働いている

app:tabBackground="@android:color/colorPrimary" 

から

app:tabBackground="@color/tab_selector" 

なぜ私に.Resources $ NotFoundExceptionを与えているのですか?

enter image description here

エラーログは、後にそれ描画可能なフォルダ(と名付けtab_color)に移動:

FATAL EXCEPTION: main Process: com.example.khash.time, PID: 31922 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.khash.time/com.example.khash.time.MainActivity}: android.content.res.Resources$NotFoundException: File res/drawable/tab_color.xml from drawable resource ID #0x7f070075 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607) 
    at android.app.ActivityThread.access$900(ActivityThread.java:174) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:146) 
    at android.app.ActivityThread.main(ActivityThread.java:5756) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/tab_color.xml from drawable resource ID #0x7f070075 
    at android.content.res.Resources.loadDrawable(Resources.java:3457) 
    at android.content.res.Resources.getDrawable(Resources.java:1897) 
    at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:353) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200) 
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188) 
    at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100) 
    at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1518) 
    at android.support.design.widget.TabLayout.createTabView(TabLayout.java:932) 
    at android.support.design.widget.TabLayout.newTab(TabLayout.java:569) 
    at com.example.khash.time.MainActivity.setupTabLayout(MainActivity.java:44) 
    at com.example.khash.time.MainActivity.onCreate(MainActivity.java:30) 
    at android.app.Activity.performCreate(Activity.java:5605) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2512) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607)   
    at android.app.ActivityThread.access$900(ActivityThread.java:174)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5756)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at dalvik.system.NativeStart.main(Native Method)  
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #0: <item> tag requires a 'drawable' attribute or child tag defining a drawable 
    at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:181) 
    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:990) 
    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:930) 
    at android.content.res.Resources.loadDrawable(Resources.java:3453) 
    at android.content.res.Resources.getDrawable(Resources.java:1897)  
    at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:353)  
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)  
    at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188)  
    at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)  
    at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1518)  
    at android.support.design.widget.TabLayout.createTabView(TabLayout.java:932)   at android.support.design.widget.TabLayout.newTab(TabLayout.java:569)  
    at com.example.khash.time.MainActivity.setupTabLayout(MainActivity.java:44)  
    at com.example.khash.time.MainActivity.onCreate(MainActivity.java:30)  
    at android.app.Activity.performCreate(Activity.java:5605)  
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2512)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2607) 
    at android.app.ActivityThread.access$900(ActivityThread.java:174)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:146)  
    at android.app.ActivityThread.main(ActivityThread.java:5756)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)  
    at dalvik.system.NativeStart.main(Native Method)  
+2

tab_selectorはドロウアブルでなければなりません – ADM

+0

完全なスタックトレースを追加できますか? – AesSedai101

+0

違いはありません。私はキャッシュを無効にしようとしました/再起動も。 – Kvoid

答えて

1

android.support.design.widget.TabLayoutは、背景としてカラー状態リストをサポートしていません。 source codeから

if (mTabBackgroundResId != 0) { 
    ViewCompat.setBackground(this, AppCompatResources.getDrawable(context, mTabBackgroundResId)); 
} 

あなたはandroid:drawableであなたのセレクタにandroid:colorを置き換えることによって、これを達成するためにStateListDrawableを使用することができます。

+0

私は色のディレクトリを変更したくないので。 – Kvoid

+1

Kvoid

+0

これはカラーディレクトリ下で動作します。 – Kvoid

0

ステップ1:バディは、あなたの解像度でxmlファイルを作成/色としてフォルダと名前を付けた値を。

ステップ2:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="tab_selector">#008080</color> 
</resources> 

代わりの#008080お好みの使用色:そのファイルの色では、あなたのように必要な色を与えます。

関連する問題