1

プロジェクトでjfeinstein10スライディングメニューライブラリを使用していますが、すべて正常に機能します。特定のデバイスでアプリを実行すると、フラグメントの上部にリストビューを保持する空白が表示されます。これが写真です。

ここに画像の説明を入力してください

スライドメニューを設定したコードは次のとおりです。

    setBehindContentView(R.layout.menu_frame);
    FragmentTransaction fragTransaction = mFragmentManager.beginTransaction();
    fragMenu = new FragmentMenu();
    fragTransaction.replace(R.id.menu_frame, fragMenu);
    fragTransaction.commit();

    SlidingMenu sm = getSlidingMenu();
    sm.setShadowWidthRes(R.dimen.shadow_width);
    sm.setShadowDrawable(R.drawable.shadow);
    sm.setBehindOffsetRes(R.dimen.actionbar_home_width);
    setSlidingActionBarEnabled(true);

    final ActionBar mActionBar = getSupportActionBar();
    mActionBar.setHomeButtonEnabled(true);
    mActionBar.setDisplayHomeAsUpEnabled(true);

そして、これは私のフラグメントレイアウトのXMLファイルになります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/fondoRowsMenuIzquierdo" >

<ExpandableListView
    android:id="@+id/expListView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:cacheColorHint="@color/fondoRowsMenuIzquierdo"
    android:childDivider="@color/fondoRowsChildMenuIzquierdo"
    android:choiceMode="singleChoice"
    android:divider="@color/separadoresMenuIzquierdo"
    android:dividerHeight="1dp"
    android:drawSelectorOnTop="true"
    android:groupIndicator="@null" />

</LinearLayout>

誰かがその空白を削除する方法を知っていますか?

4

3 に答える 3

1

この問題を解決して、最新のSlidingMenuライブラリに更新しました:https ://github.com/jfeinstein10/SlidingMenu 。しかし、このアップデートには別の問題がありました。

SlidingMenu.javaには、次のコードがあります。

public void manageLayers(float percentOpen) {
    if (Build.VERSION.SDK_INT < 11) return;

    boolean layer = percentOpen > 0.0f && percentOpen < 1.0f;
    final int layerType = layer ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE;

    if (layerType != getContent().getLayerType()) {
        mHandler.post(new Runnable() {
            public void run() {
                Log.v(TAG, "changing layerType. hardware? " + (layerType == View.LAYER_TYPE_HARDWARE));
                getContent().setLayerType(layerType, null);
                getMenu().setLayerType(layerType, null);
                if (getSecondaryMenu() != null) {
                    getSecondaryMenu().setLayerType(layerType, null);
                }
            }
        });
    }

このライブラリをHONEYCOMBまたは以前のAPIバージョンで使用している場合、このコードではスライドメニューのビューを操作できません。この検証を変更する必要があります。

if (Build.VERSION.SDK_INT < 11) return;

このため:

if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2)return;
于 2013-03-26T01:17:23.810 に答える
0

スライドメニューライブラリのcolors.xmlの値を変更します

于 2013-12-04T02:44:43.863 に答える
0

私にとっては、次のように機能しました。

あなたのプロジェクト/.../slidingmenu/src/com.slidingmenu.lib/SlidingMenu.java

protected boolean fitSystemWindows(Rect insets) {

どこに〜がある

int topPadding = getPaddingTop() + insets.top;
int bottomPadding = getPaddingBottom() + insets.bottom;

以下を追加します。

if (Build.VERSION.SDK_INT >= 21) {
    topPadding = insets.top;
 }

問題がある場合は、bottomPaddingまたはその他のパディングも修正できます。問題が下部のナビゲーションバーに関連している場合は、高さを確認し、これを追加して同じファイルのパディングを修正できます。

    if (Build.VERSION.SDK_INT >= 21) {
        Resources resources = getContent().getResources();
        int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
        if (resourceId > 0) {
            bottomPadding += resources.getDimensionPixelSize(resourceId);
        }
    }
于 2015-07-09T17:01:24.863 に答える