Ich folge diesem Beispiel
http://www.androidhive.info/2015/04/android-getting-started-with-material-design/
und in diesem Beispiel wird das Hamburger-Symbol weiß angezeigt. Ich möchte es anpassen und schwarz machen, aber ich kann nichts finden, um es zu ändern. Kann jemand sagen, wie es angepasst werden soll?
Manifest
<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>
Stil
<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>
Hauptaktivität
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);
}
}
Antworten:
Um die Farbe des Hamburger-Symbols zu ändern, müssen Sie die Klasse "style.xml" öffnen und dann diesen Code ausprobieren:
Überprüfen Sie also die
<item name="color">@android:color/black</item>
Zeile. Ändern Sie hier einfach Ihre gewünschte Farbe.quelle
Fügen Sie diese Zeile programmgesteuert hinzu
quelle
Das Überschreiben von colorControlNormal funktioniert ebenfalls.
quelle
1.In Color.xml.
<color name="hamburgerBlack">#000000</color>
2.In style.xml.
3. Dann Ihre Hauptthemenklasse (Dateiname style.xml). Ich habe "AppTheme".
quelle
Dazu können Sie wie folgt vorgehen:
quelle
yourProject / res / values / styles.xml
in der styles.xml hinzufügen:
quelle
*** app: popupTheme = "@ style / AppThemeNoActionBar.PopupOverlay">
füge dies endlich hinzu
quelle
Dies funktioniert gut, wenn Sie app: theme = "@ style / MyMaterialTheme" festlegen.
quelle
Nach einem Kampf von 2 Stunden hat mir dieser Beitrag geholfen. Ändern Sie im Beispiel für ein Androidhive-Material die Primärfarbe in eine andere, um eine neue Farbe für die Aktionsleiste zu erhalten. Der folgende Code dient zum Abrufen der Pfeilmarkierung in der Aktionsleiste und zum Erstellen von benutzerdefiniertem Text. Schließlich habe ich verstanden, dass das Pfeilsymbol in Appcompat-Ressourcendateien enthalten ist, das Hamburger-Symbol jedoch nicht in den Ressourcen. Wenn es vorhanden ist, können wir es zur Laufzeit ändern
Zum Ändern der Home-Taste folgte ich der Antwort von @anandsingh.
quelle
quelle
Wenn Sie die Farbe nur in das Symbol Ihrer Navigationsschublade ändern möchten, versuchen Sie Folgendes:
direkt in Ihrer activity_drawer.xml
quelle
Das Hamburger-Symbol wird von Ihrer Aktionsklasse gesteuert
ActionBarDrawerToggle
. Wenn Sie die Android-kompatiblen Bibliotheken verwenden, ist dies derzeit ein Muss. Sie können die Farbe folgendermaßen ändern:quelle