4

私はfragmentsを内部的に使用するナビゲーション・ドロワー(Androidスタジオのアクティビティ・テンプレートから生成したもの)を利用するアプリケーションで作業しています。ナビゲーションドロワーは私のMainActivityに入れ子になっています。私はまた、2つのオプションがあるメニューをツールバーに追加しました。フィルタ&設定(ASテンプレートからも設定が生成されます)。異なるAPIバージョン間のUI互換性の問題

私のLoginActivityはdrawableTint(これは私がAPI23以上でしか動作しないと認識している)と共にdrawableLeft属性を使用しています。 drawableLeftアイコンを古いバージョンで白く表示するにはどうすればよいですか? LoginActivity

第2の重要な問題は、Toolbarとその互換性に関するものです。 API24(Nexus 5Xを使用してシミュレート)では、Toolbarはステータスバーの下に正しく整列されていますが、API19ではToolbarはステータスバーの下に表示され、色も一致しません。さて、私は、ツールバーがMaterial Designに新たに加わったので、API 23+(私は思う)からサポートされていることを認識していますが、これを修正する正しい方法は何でしょうか?

MainActivity

app_bar_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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.michael.whatsupldn.MainActivity"> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="centerCrop" 
     android:src="@drawable/london_skyline_dark" 
     android:layout_alignParentTop="true" 
     android:id="@+id/imageView" 
     android:contentDescription="@string/london_skyline"/> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:elevation="4dp" 
      android:fitsSystemWindows="true" 
      app:popupTheme="@style/AppTheme.PopupOverlay"/> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_main" /> 

</android.support.design.widget.CoordinatorLayout> 

すべてのヘルプははるかに高く評価されます!

P.S.分析に役立つコードが必要な場合は、すぐに尋ねてください。

EDIT私はまた私のFilterActivity内で同じToolbar問題が発生している

... FiltersActivity

UPDATE

AppBarLayoutとにfitsSystemWindowsを適用した後、これは私の問題を修正していない次の結果です。それは私がdrawableLeftアイコンが古いバージョンに白で表示するように取得できますか24

MainActivity after EDIT

+0

第1号:@ color/whiteや#ffffffのような描画可能な色を設定していますか? –

+0

@UsmanRana私はこのように設定しています:android:drawableTint = "#FAFAFA" – AndroidDevBro

+0

このdrawableのベクトルアセットを使用していますか? –

答えて

0

問題#1はArnab Kuntuに固定のおかげでした。

問題#2 stylesの中でテーマを使って遊んでくれてありがたいことに感謝して解決しました。私のAppThemeは、<item name="android:windowTranslucentStatus">true</item>の中にネストされた次の宣言を持っていました。は、シミュレータがAction Bar/Toolbarの下に座っていることをサポートする基礎がないと思うように、Status barを透明にしています。

1

APIで出力を不安定化として、それは実際にケースを悪化させたのか?

あなたはDrawableCompatを利用することができます:

Drawable drawable = getResources().getDrawable(R.drawable.some_drawable); 
drawable = DrawableCompat.wrap(drawable); 
DrawableCompat.setTint(drawable.mutate(), getResources().getColor(android.R.color.white)); 

Source

この(ツールバーallignment)を固定するには正しいアプローチでしょうか?

Toolbarとその親の両方にandroid:fitsSystemWindows="true"を適用します。

+0

です。今、ツールバーには含まれていますが、その親は何ですか?私はapp_barのために私のXMLコードを含めました... – AndroidDevBro

+0

'AppBarLayout'と' CoordinatorLayout'に 'fitsSystemWindows'を適用します。 – azizbekian

+0

私のポストを見てください、私は出力とそれを更新しました。それは私のために働いていない。 – AndroidDevBro

2

は私が

 android:fillColor="#FFFFFF" 

もし.....

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="24dp" 
    android:height="24dp" 
    android:viewportWidth="24.0" 
    android:viewportHeight="24.0"> 
<path 
    android:fillColor="@color/colorWhite" 
    android:pathData="M12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 
    0.9,2 2,2zM18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 
    -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 
    -2,-2zM8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1s3.1,1.39 
    3.1,3.1v2L8.9,8L8.9,6zM18,20L6,20L6,10h12v10z"/> 
</vector> 

変更のコード行

 android:fillColor="@color/colorWhite" 

に.....あなたのベクトルのコードは次のようだと思います私は間違っていない、これはあなたのための解決策です。 enter image description here

+0

はい、それはうまくいきました - ありがとう、すばらしい答え!私が言及した第2の問題を見て、あなたは何か変わったことがありますか? – AndroidDevBro

+0

https://stackoverflow.com/questions/26532045/tinting-checkbox-on-pre-v21 –

+0

このリンクはbuttonTintと関連していますが、私が使用したチェックボックスはbuttonTintと関連しています。それがあなたのために働くかどうか分からない。 –

1

あなたがプログラムで色を設定することができますし、それはあなたのために働くだろう:

// 0=left, 1=top , 2=right , 3=bottom 
    editText.getCompoundDrawables[0].mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP); 
関連する問題