V7 21ライブラリAppCompatのアンドロイドからDrawerArrowToggleを実装する方法

? Bignadad @ | Original: StackOverFlow

だから今のAndroid 5.0がリリースされたことを私はアニメのアクションバーのアイコンを実装する方法を疑問に思っていた。

このライブラリhttps://github.com/balysv/material-menuは私のために、それを実現することができる方法AppCompatのv7のライブラリはそれを持っているので、細かいことを実装しています?

ライブラリ参照それthemes.xmlで

 <item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item>

このスタイルの下で

 <style name="Base.V7.Theme.AppCompat" parent="Platform.AppCompat">

UPDATE

私は、これはV7のDrawerToggleを使用して実装だ。しかし、私はそれをスタイルすることはできません。助けてください

私はV7のstyles_base.xmlでそれをスタイリングを見つけた

    <style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="">
    <item name="color">?android:attr/textColorSecondary</item>
    <item name="thickness">2dp</item>
    <item name="barSize">18dp</item>
    <item name="gapBetweenBars">3dp</item>
    <item name="topBottomBarArrowSize">11.31dp</item>
    <item name="middleBarArrowSize">16dp</item>
    <item name="drawableSize">24dp</item>
    <item name="spinBars">true</item>
</style>

私は自分のスタイルにこれを追加して動作しませんでした。また、私のattr.xmlに追加

<declare-styleable name="DrawerArrowToggle">
    <!-- 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 size of the top and bottom bars when they merge to the middle bar to form an arrow -->
    <attr name="topBottomBarArrowSize" format="dimension"/>
    <!-- The size of the middle bar when top and bottom bars merge into middle bar to form an arrow -->
    <attr name="middleBarArrowSize" format="dimension"/>
    <!-- The size of the bars when they are parallel to each other -->
    <attr name="barSize" format="dimension"/>
    <!-- The thickness (stroke size) for the bar paint -->
    <attr name="thickness" format="dimension"/>
</declare-styleable>

そうするときにはクラッシュし、カラータイプのエラーは述べています。私は何をしないのですか?



Top 5 Respuesta

1ianhanniballake @

あなたが使用している場合はhttp://developer.android.com/training/implementing-navigationで提案されているようにサポートライブラリはhttp://developer.android.com/reference/android/support/v4/widget/DrawerLayout.htmlを提供現在は非推奨HTTPとは異なる://開発者/nav-drawer.html 、新しくhttp://developer.android.com/reference/android/support/v7/app/ActionBarDrawerToggle.html追加された(注を使用することができます。 android.com/reference/android/support/v4/app/ActionBarDrawerToggle.html ) :

引出しが閉じているときハンバーガーのアイコンを示しており、矢印は、引出しが開いているとき。引き出しが開くようにそれは、これらの2つの状態の間でアニメーション化します。

それはコンストラクタで実施における唯一の違い - トレーニングは、非推奨/アカウントに新規クラスを取るように更新されていないが、あなたはほぼ正確に同じコードを、それを使用することができるはずです。



2Yong @

まず、あなたは今、「 ____ 」推奨されていません知っている必要があります。

あなたは「 ____ 」とそれを置き換える必要があります。

ここで「 ____ 」を置き換えるために、「 ____ 」私の例であり、私は新しい使用しています。

android.support.v4.app.ActionBarDrawerToggle

android.support.v7.app.ActionBarDrawerToggle

Toolbar

ActionBar

あなたは上のドキュメントを読むことができますhttp://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#DrawerArrowToggle_spinBars

この属性は、メニュー·ツー·矢印アニメーションを実装するための鍵となります。

パブリック静的int型DrawerArrowToggle_spinBars   バーは、遷移中ではない回転または必要があるかどうか   、ブール値のいずれかでなければならない" true"または "false" 。

だから、あなたはこれを設定: 「 ____ 」 。

そしてアニメーションを提示することができる。

これはあなたを助けることができると思います。

3Nitin Misra @

私は上記のコードを少し修正したい

MainActivity.java

そして他のすべてのものは同じままになります...

オーバーレイツールバー「 ____ 」の問題を抱えている人のために

引き出しコンテンツのルートレイアウトに「 ____ 」を追加

4Tim Rijckaert @

私は、同様の機能を持っていた小さなアプリケーションを作成しました

MainActivity

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
        this,  mDrawerLayout, mToolbar,
        R.string.navigation_drawer_open, R.string.navigation_drawer_close
    );
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    mDrawerToggle.syncState();
}

その活動の私のXML

styles.xml

私のカスタムツールバーXML

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

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/white</item>
</style>

My Theme Style

<item name="spinBars">true</item>

値- V21の私のスタイル

    public class MainActivity extends ActionBarActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
        DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
            this,  mDrawerLayout, mToolbar,
            R.string.navigation_drawer_open, R.string.navigation_drawer_close
        );
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
    }