Je suis cet exemple
http://www.androidhive.info/2015/04/android-getting-started-with-material-design/
et dans cet exemple, l'icône de hamburger est blanche, je veux la personnaliser et la rendre noire, mais je ne suis pas en mesure de trouver quoi que ce soit pour la changer, est-ce que quelqu'un peut dire comment le personnaliser?
Manifeste
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="info.androidhive.materialdesign" >
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyMaterialTheme" >
<activity
android:name=".activity.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
style
<resources>
<style name="MyMaterialTheme" parent="MyMaterialTheme.Base">
</style>
<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="homeAsUpIndicator">@drawable/hamburger</item>
</style>
</resources>
Activité principale
public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
private static String TAG = MainActivity.class.getSimpleName();
private Toolbar mToolbar;
private FragmentDrawer drawerFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
drawerFragment = (FragmentDrawer)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
drawerFragment.setDrawerListener(this);
// display the first navigation drawer view on app launch
displayView(0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
if(id == R.id.action_search){
Toast.makeText(getApplicationContext(), "Search action is selected!", Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onDrawerItemSelected(View view, int position) {
displayView(position);
}
private void displayView(int position) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (position) {
case 0:
fragment = new HomeFragment();
title = getString(R.string.title_home);
break;
case 1:
fragment = new FriendsFragment();
title = getString(R.string.title_friends);
break;
case 2:
fragment = new MessagesFragment();
title = getString(R.string.title_messages);
break;
case 3:
fragment = new ContactUsFragment();
title = getString(R.string.title_contactus);
break;
case 4:
fragment = new AboutUsFragment();
title = getString(R.string.title_aboutus);
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container_body, fragment);
fragmentTransaction.commit();
// set the toolbar title
getSupportActionBar().setTitle(title);
}
}
Réponses:
Pour changer la couleur de l'icône du hamburger, vous devez ouvrir la classe "style.xml", puis essayez ce code:
<style name="MyMaterialTheme" parent="MyMaterialTheme.Base"> </style> <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> </style> <style name="DrawerArrowStyle" parent="@style/Widget.AppCompat.DrawerArrowToggle"> <item name="spinBars">true</item> <item name="color">@android:color/black</item> </style>
Alors vérifiez la
<item name="color">@android:color/black</item>
ligne. Changez simplement la couleur souhaitée ici.la source
faites-le par programme, ajoutez cette ligne
la source
1.Dans Color.xml.
<color name="hamburgerBlack">#000000</color>
2.Dans style.xml.
<style name="DrawerIcon" parent="Widget.AppCompat.DrawerArrowToggle"> <item name="color">@color/hamburgerBlack</item> </style>
3. Ensuite, votre classe de thème principal (nom de fichier style.xml). J'ai «AppTheme».
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="drawerArrowStyle">@style/DrawerIcon</item> </style>
la source
Le remplacement de colorControlNormal fonctionne également.
<item name="colorControlNormal">@android:color/holo_red_dark</item>
la source
Pour cela, vous pouvez procéder comme suit:
protected ActionBarDrawerToggle drawerToggle; drawerToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.black));
la source
votreProjet / res / values / styles.xml
dans le styles.xml ajoutez:
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorControlNormal">@color/white</item> </style>
la source
<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorTransparent"
android:theme="@style/AppThemeNoActionBar.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" ***
*** app: popupTheme = "@ style / AppThemeNoActionBar.PopupOverlay">
enfin ajouter ceci
<style name="AppThemeNoActionBar" 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="colorControlNormal">@color/colorRedTitle</item> </style>
la source
Cela fonctionne bien lorsque vous définissez app: theme = "@ style / MyMaterialTheme"
la source
Après une lutte de 2 heures, ce post m'a aidé. Dans l'exemple de matériau Androidhive, remplacez la couleur primaire par une autre pour obtenir une nouvelle couleur de barre d'action. ce code ci-dessous sert à obtenir une flèche sur la barre d'action et à créer un texte personnalisé. Enfin, j'ai compris que l'icône de flèche sera dans les fichiers de ressources appcompat mais l'icône de hamburger n'est pas présente dans les ressources. s'il est présent, nous pouvons le changer au moment de l'exécution
setSupportActionBar(toolbar); final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha); upArrow.setColorFilter(getResources().getColor(R.color.black), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow); getSupportActionBar().setTitle(Html.fromHtml("<font color=\"black\">" + "All Addresses" + "</font>")); getSupportActionBar().show();
pour changer le bouton d'accueil, j'ai suivi la réponse @anandsingh.
la source
//----------your own toolbar----------------------------- <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:elevation="4dp" android:padding="1dp" android:background="@color/blue" > </android.support.v7.widget.Toolbar> //-----------Main activity xml, add your own toolbar----------------------------------------------- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.v1technologies.sgcarel.FrameActivity"> <include android:id="@+id/toolbar" layout="@layout/toolbar" /> <FrameLayout android:padding="2dp" android:layout_marginTop="70dp" android:id="@+id/frame_frame_activity" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> </RelativeLayout> //---- In your activity----------------------- toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //=========================================================================== @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); int color = Color.parseColor("#334412"); final PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP); for (int i = 0; i < toolbar.getChildCount(); i++) { final View v = toolbar.getChildAt(i); if (v instanceof ImageButton) { ((ImageButton) v).setColorFilter(colorFilter); } } return true; }
la source
Si vous souhaitez modifier la couleur uniquement en icône de votre tiroir de navigation, essayez ceci:
<android.support.design.widget.NavigationView app:itemIconTint="@color/thecolorthatyouwant" />
directement dans votre activity_drawer.xml
la source
L'icône de hamburger est contrôlée par votre
ActionBarDrawerToggle
classe d' action . Si vous utilisez les bibliothèques de compatibilité Android, ce qui est indispensable pour le moment. Vous pouvez changer la couleur comme ceci:la source