java - theme - trucos divi
Cómo cambiar el color del icono de hamburguesa en el cajón de navegación de diseño de materiales (12)
1.En Color.xml.
<color name="hamburgerBlack">#000000</color>
2.En style.xml.
<style name="DrawerIcon" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@color/hamburgerBlack</item>
</style>
3. Luego, su clase de tema principal (nombre de archivo style.xml). Tengo "AppTheme".
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="drawerArrowStyle">@style/DrawerIcon</item>
</style>
Estoy siguiendo este ejemplo
http://www.androidhive.info/2015/04/android-getting-started-with-material-design/
y en este ejemplo muestra el icono de hamburguesa en blanco, quiero personalizarlo y hacerlo en negro, pero no puedo encontrar nada sobre cómo cambiarlo, ¿alguien puede decir cómo personalizarlo?
Manifiesto
<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>
estilo
<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>
Actividad principal
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);
}
}
Anular colorControlNormal también funciona.
<item name="colorControlNormal">@android:color/holo_red_dark</item>
Después de una lucha de 2 horas, esta publicación me ayudó. En el ejemplo de material de Androidhive, cambie el color primario a otro para obtener un nuevo color de barra de acción. Este código a continuación es para obtener la marca de flecha en la barra de acción y hacer texto personalizado. Finalmente entendí que el ícono de flecha estará en los archivos de recursos de appcompat pero el ícono de hamburguesa no estará presente en los recursos. si está presente podemos cambiarlo en tiempo de ejecución
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();
para cambiar el botón de inicio, seguí la respuesta de @anandsingh.
El icono de hamburguesa está controlado por su acción
ActionBarDrawerToggle
class.
Si está utilizando las bibliotecas de compatibilidad de Android, que es imprescindible como en este momento.
Puedes cambiar el color de esta manera:
toggle?.drawerArrowDrawable?.color = ContextCompat.getColor(context, R.color.colorPrimary)
Esto funciona bien cuando configura la aplicación: theme = "@ style / MyMaterialTheme"
Para cambiar el color del icono de hamburguesa, debe abrir la clase "style.xml", luego intente este código:
<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>
Así que marque
<item name="color">@android:color/black</item>
line.
Simplemente cambie su color deseado aquí.
Para eso puede proceder de la siguiente manera:
protected ActionBarDrawerToggle drawerToggle;
drawerToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.black));
Si desea cambiar el color solo al icono del cajón de navegación, intente esto:
<android.support.design.widget.NavigationView
app:itemIconTint="@color/thecolorthatyouwant"
/>
directamente en tu activity_drawer.xml
hágalo programáticamente esta línea
actionBarDrawerToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.white));
yourProject / res / values / styles.xml
en el styles.xml agregue:
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorControlNormal">@color/white</item>
</style>
enter code here :
//----------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;
}
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorTransparent"
eliminar temas también
android:theme="@style/AppThemeNoActionBar.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
***
elimina esto
*** aplicación: popupTheme = "@ style / AppThemeNoActionBar.PopupOverlay">
</android.support.design.widget.AppBarLayout>
finalmente agregue esto
<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>
A tu principal hemo
<item name="colorControlNormal">@color/colorRedTitle</item>
</style>