安卓导航抽屉透明度

5

我按照这个教程使用android-support-v4实现了NavigationDrawer。

我的结果在这张截图中显示。

问题是如何删除或配置抽屉上的透明度,因为它会与背景文本混在一起看起来很糟糕。

enter image description here

更新: 这是我的布局配置,背景设置为深色。

<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

    <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    <ListView
            android:id="@+id/left_drawer"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp"
            android:background="#111111"/>
</android.support.v4.widget.DrawerLayout>

你有没有得到这个问题的答案?我也遇到了同样的问题。 - almyz125
@almyz125 请看下面的讨论中我的回复。这只是一个关于片段替换转换的愚蠢错误。 - Sergii
9个回答

3

您需要为您的ListView添加alpha属性。 使用您的XML文件并扩展ListView定义,加上alpha属性。

<ListView
     android:id="@+id/left_drawer"
     android:layout_width="240dp"
     android:layout_height="match_parent"
     android:layout_gravity="start"
     android:choiceMode="singleChoice"
     android:divider="@android:color/transparent"
     android:dividerHeight="0dp"
     android:background="#111111"
     android:alpha="255"
/>

2

在你的代码中使用以下方法。获取抽屉视图的背景并为其设置透明度。

  Drawable background = drawerView_.getBackground();
  background.setAlpha(255);

1
要使导航抽屉透明,您必须首先在res/values/colors.xml文件中定义抽屉的颜色。 例如:<color name="navigationDrawerNew">#7ba9530c</color> 现在,在此行的左侧,您选择的颜色将显示为一个小正方形。 请参见示例图像 单击它。它会弹出一个颜色选择器。在颜色选择器中,底部有一个滑块,可以让您调整透明度。调整它以获得所需的透明度。 现在,在xml文件中将此颜色设置为导航抽屉列表视图的背景颜色。列表视图几乎看起来像这样:
<ListView
    android:id="@+id/navList"
    android:layout_width="200dp"
    android:layout_height="match_parent"
    android:layout_gravity="left|start"
    android:background="@color/navigationDrawerNew" />

1
感谢所有尝试回答我的问题的人。 很抱歉,问题出在代码中的Fragment初始化。 因此,我尝试将Fragment作为新实例添加,但实际上应该只是替换布局中已定义的Fragment,如下所示:
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
FeedFragment fragment = new FeedFragment();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

现在一切正常。

2
所以你的问题不是关于抽屉透明度,而是关于片段重叠的问题。 - Gabriel Câmara

0

您只需要在代码中为DrawerListView设置背景颜色,就像这样:

mDrawerListView.setBackgroundColor(Color.LTGRAY);

这对我来说是工作。不需要添加Alpha值。


0

将抽屉的背景(在链接的演示中是ListView)设置为纯色/可绘制对象


0

它不会默认透明,你必须在活动布局文件中设置它。将android.support.v4.widget.DrawerLayout标签中的android:background更改为纯色即可。


我已经更新了我的问题并尝试过更改布局。 - Sergii
在我看来,内容似乎是在抽屉布局的顶部,而不是抽屉是透明的。您发布的XML是否是整个文件?android.support.v4.DrawerLayout元素必须是布局文件中的第一件事。 - Dreagen
将DrawerLayout作为布局文件中的第一件事 - 是的,就像示例一样。很抱歉这里没有帮助。 - Sergii

0
你的适配器在 getView(LayoutInflater inflater, ..., ...) 中填充的布局是什么?
ListView 填充了一些布局,这个布局似乎是透明的,而不是抽屉式的。 你的抽屉背景颜色变成了 ListView 的项目颜色。
你可以注意到抽屉的第二部分比项目略暗。

我这里根本没有使用NavigationDrawerAdapter - 就像这个例子http://developer.android.com/training/implementing-navigation/nav-drawer.html所示。 - Sergii
正如您所看到的,您实际上有一个适配器。如何调用它取决于您。mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item/*这是您的ListView填充的布局*/, mPlanetTitles));只需查看此布局并检查其背景即可。 - Gabriel Câmara

0
你可以在Java文件中添加ListView的背景色,这样它就能正常工作。

listview.setBackgroundColor(Color.WHITE);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接