2017-11-06 5 views
2

Ich habe ein Problem mit meiner ActionBar, die dazu führt, dass mein Menü-Symbol gegen den Rand des Bildschirms gedrückt wird! imageAndroid Studio ActionBar Breite/Symbol Standorte

Im Folgenden finden Sie einige Code-Schnipsel der Arten Ich gezwickt habe und die Erklärungen:

HomeActivity.xml

private TextView tvViewAll; 
DrawerLayout mDrawerLayout; 
private ActionBarDrawerToggle mDrawerToggle; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    //Nav Drawer 
    mDrawerLayout = findViewById(R.id.drawer_layout); 

    //custom shadow for menu drawer 
    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 

    // ActionBarDrawerToggle ties together the the proper interactions 
    // between the sliding drawer and the action bar app icon 
    mDrawerToggle = new ActionBarDrawerToggle (this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close); 

    mDrawerLayout.addDrawerListener(mDrawerToggle); 
    mDrawerToggle.syncState(); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if(mDrawerToggle.onOptionsItemSelected(item)){ 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

styles.xml

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:statusBarColor">@color/colorBackgroundBlack</item> 
    <item name="android:navigationBarColor">@color/colorBackgroundBlack</item> 
    <item name="actionMenuTextColor">@color/colorBackgroundBlackDark</item> 
    <item name="colorPrimary">@color/colorBackgroundBlackDark</item> 
    <item name="colorAccent">@color/colorPrimaryDark</item> 
    <item name="colorButtonNormal">@color/ipBlue</item> 
    <item name="toolbarNavigationButtonStyle">@color/ipGreen</item> 
</style> 

<style name="ActionBar.Solid.TMSA.NoTitle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
    <item name="displayOptions">useLogo|showHome</item> 
    <item name="logo">@drawable/ic_ipaustralialogo</item> 
    <item name="android:contentDescription">@string/ip_logo</item> 
</style> 

<style name="AppTheme.TMSA" parent="@style/AppTheme"> 
    <item name="actionBarStyle">@style/ActionBar.Solid.TMSA.NoTitle</item> 
</style> 

Ich erinnere mich nicht berühren das Formatieren Layout für die ActionBar abgesehen von der Einbeziehung der Gov-Logo, aber ich kann nicht anders herausfinden, warum ich diese schief Menü-Symbol bekomme.

Ich habe bereits einen Toolbar Ansatz in Betracht gezogen zu tun, aber würde es vorziehen, nicht zu konvertieren zu haben: P

Glücklich Codierung :)

+1

'toolbarNavigationButtonStyle' nimmt einen Stil, nicht nur eine Farbe. Ich würde vermuten, dass es damit versagt; zumindest erhält es nicht den minimalen Breitenwert, der im Standardstil eingestellt ist. Wenn Sie diesen Stil ändern möchten, sollten Sie Ihren eigenen Stil mit dem Standardstil als Parent erstellen und die gewünschten Attribute darin festlegen. Ähnliches wird im ersten Codeblock in [dieser Antwort] angezeigt (https://stackoverflow.com/a/46495771). –

+0

Kein Problem.Übrigens, ich bin mir nicht sicher, welchen Teil genau du dort bemalen willst, aber der animierende Hamburger-Pfeil, der gezeichnet werden kann, hat seinen eigenen Stil, den du auch ändern kannst. Es gibt ein Beispiel dafür in [dieser Antwort] (https://stackoverflow.com/a/27251004). –

+0

@MikeM. hatte nicht einmal den Hamburger/Pfeil! Ich werde es versuchen :) auch - Entschuldigen Sie die Störung, aber ich versuche, Ihren ersten Kommentar als die richtige Antwort zu markieren, aber ich kann Sie nicht sogar auffrischen - liegt es daran, dass ich ein Neuling bin oder? –

Antwort

0

ActionBarDrawerToggle setzt sein Toggle-Symbol auf den ActionBar ‚s-Navigationstaste. In einer AppCompatActivity ist die ActionBar tatsächlich eine Toolbar darunter, und diese Navigationsschaltfläche ist mit der style Ressource im Attribut toolbarNavigationButtonStyle des Themas festgelegt.

In Ihrem Thema haben Sie eine color Ressource auf dieses Attribut gesetzt, anstatt eine style Ressource, und alle Werte in der Standardstil verloren, einschließlich der minWidth Wert, der eingewickelt, warum Ihr Knebel ist die Breite des Zeichens.

Wenn Sie einige Stil-Werte auf der Navigationstaste ändern möchten, sollten Sie Ihre eigenen style Ressource, mit der Standard-style als parent, stellen Sie die gewünschten Attribute dort erstellen und festlegen, dass style als Thema des toolbarNavigationButtonStyle. Zum Beispiel:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    ... 
    <item name="toolbarNavigationButtonStyle">@style/Toolbar.Button.Navigation</item> 
</style> 

<style name="Toolbar.Button.Navigation" parent="Widget.AppCompat.Toolbar.Button.Navigation"> 
    <item name="android:background">@color/ipGreen</item> 
</style> 

Wenn das, was Sie tatsächlich versuchen, die Hamburger-Pfeil ziehbar zu ändern ist, es hat seinen eigenen Stil, den Sie „sub-Stil“ können, und bestimmte Funktionen ändern. Zum Beispiel:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    ... 
    <item name="drawerArrowStyle">@style/DrawerArrowToggle</item> 
</style> 

<style name="DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle"> 
    <item name="color">@color/ipGreen</item> 
</style> 

Unten ist die vollständige Liste der Attribute für die Modifikation in einem drawerArrowStyle, sollten Sie andere seiner Eigenschaften anpassen möchten.

<!-- The drawing color for the bars --> 
<attr name="color" format="color"/> 
<!-- Whether bars should rotate or not during transition --> 
<attr name="spinBars" format="boolean"/> 
<!-- The total size of the drawable --> 
<attr name="drawableSize" format="dimension"/> 
<!-- The max gap between the bars when they are parallel to each other --> 
<attr name="gapBetweenBars" format="dimension"/> 
<!-- The length of the arrow head when formed to make an arrow --> 
<attr name="arrowHeadLength" format="dimension"/> 
<!-- The length of the shaft when formed to make an arrow --> 
<attr name="arrowShaftLength" format="dimension"/> 
<!-- The length of the bars when they are parallel to each other --> 
<attr name="barLength" format="dimension"/> 
<!-- The thickness (stroke size) for the bar paint --> 
<attr name="thickness" format="dimension"/>