Android - 自定义ActionBar无法正常工作

时间:2015-02-04 10:59:39

标签: android android-actionbar android-support-library

我为ActionBar创建了一个自定义视图,但它没有填满整个操作栏! 这是结果: enter image description here

这是我的操作栏布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/actionbar_background">
<TextView
    android:text="SOOPAC"
    android:textAppearance="?android:attr/textAppearanceInverse"
    android:layout_alignParentLeft="true"
    android:layout_height="match_parent"
    android:layout_width="wrap_content"
    android:gravity="center_vertical"
    android:paddingLeft="15dp"/>
<LinearLayout
    android:layout_width="35dp"
    android:layout_height="match_parent"
    android:weightSum="4"
    android:orientation="vertical"
    android:layout_alignParentRight="true">
    <Space
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.8"/>
    <View 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:background="@android:color/white"/>
     <Space
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.8"/>
    <View 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:background="@android:color/white"/>
     <Space
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.8"/>
    <View 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:background="@android:color/white"/>
</LinearLayout>

</RelativeLayout>

这是我的活动类:

    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    public class ActivityMain extends ActionBarActivity {
        ViewPager viewPager;
        @Override
        protected void onCreate(Bundle arg0) {
            // TODO Auto-generated method stub
            super.onCreate(arg0);
            setContentView(R.layout.activity_main);
            ActionBar actionBar = getSupportActionBar();
            actionBar.setDisplayShowHomeEnabled(false);
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setCustomView(R.layout.actionbar_layout);
            actionBar.setDisplayShowCustomEnabled(true);
            actionBar.setDisplayHomeAsUpEnabled(false);
            actionBar.setHomeButtonEnabled(false);
            actionBar.setStackedBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.actionbar_tabs_background)));
            actionBar.setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
            View homeIcon = findViewById(android.R.id.home);
            // Hides the View (and so the icon)
            if (homeIcon != null)
                ((View) homeIcon.getParent()).setVisibility(View.GONE);

            overridePendingTransition(0, 0);
        }
    }

这是我的活动观点:

<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <!-- The main content view -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"></LinearLayout>
    <!-- The navigation drawer -->
    <ListView
        android:id="@+id/listView_right_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="@color/navigation_drawer_background"/>
</android.support.v4.widget.DrawerLayout>

我在动作栏中禁用了所有内容,但它并没有消失。 的被修改 我设置LayoutParams Math_Parent宽度和高度......仍然有同样的问题

2 个答案:

答案 0 :(得分:0)

在操作栏中尝试此操作

LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT);
actionBar.setCustomView(R.layout.actionbar_layout,lp);

答案 1 :(得分:0)

首先你需要检查一下:

styles.xml 文件:

<resources>

<!-- Base application theme. -->
<style name="CustomActionBarTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<!-- ActionBar styles -->
<style name="MyActionBar" parent="Widget.AppCompat.ActionBar">
    <item name="android:windowBackground">@color/sapient_heat</item>
    <item name="background">@color/red</item>
</style>

这不是一个完美的解决方案,但有机会解决。