半透明状态栏和ListView问题

时间:2016-12-06 20:38:57

标签: android android-layout

我有一个简单的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<ListView
    android:id="@+id/list_view"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

它看起来像这样

Link to example image

但我希望我的名单在状态栏下。 就像在谷歌照片应用程序

Link to example image

我将android:fitsSystemWindows="true"添加到了我的ListView,但没有得到理想的结果。

请帮我实现像Google Photo中的ListView行为。

非常感谢。

2 个答案:

答案 0 :(得分:0)

ListView与透明状态栏无关。

如果您希望自己的应用拥有透明的状态栏,则需要像这样实现自己的风格

<!-- Make the status bar translucent -->
<style name="AppTheme" parent="AppTheme.Base"> <!-- or some theme you are using-->
    <item name="android:windowTranslucentStatus">true</item>
</style>

然后在你的活动中,

// A method to find height of the status bar
public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        height = getResources().getDimensionPixelSize(resourceId);
    }

    return height;
}

// in your onCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity);

    // Retrieve the AppCompact Toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(toolbar);

    // Set the padding to match the Status Bar height
    toolbar.setPadding(0, getStatusBarHeight(), 0, 0);
}

大多数来自:http://blog.raffaeu.com/archive/2015/04/11/android-and-the-transparent-status-bar.aspx

答案 1 :(得分:0)

尝试在您的活动正在使用的样式中添加以下内容(仅适用于api 21级或更高版本)

    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>