代码之家  ›  专栏  ›  技术社区  ›  Figen Güngör

ActionBar自定义

  •  0
  • Figen Güngör  · 技术社区  · 11 年前

    我正在尝试创建一个自定义布局,使标题居中并更改actionbar的背景色,但我得到的是:

    enter image description here

    你能告诉我我做错了什么吗?

    主要活动.java

    public class MainActivity extends ActionBarActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        ActionBar actionBar = getSupportActionBar();
        //actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setIcon(
                    new ColorDrawable(getResources().getColor(android.R.color.transparent)));
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setDisplayShowTitleEnabled(false);
        //actionBar.setIcon(R.drawable.ic_launcher);
    
        LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflator.inflate(R.layout.actionbar_layout, null);
    
        actionBar.setCustomView(v);
    }
    }
    

    actionbar_layout.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill_horizontal"
    android:background="#00ffff"
    android:orientation="horizontal">
    
    <TextView
        android:text="title"
        android:textColor="#000000"
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_height="wrap_content"/> 
    
    </RelativeLayout>
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   Cruceo    11 年前

    我已经多次遇到这种情况(据我所知,仅在3.0+设备上),因此,您应该尝试将这些呼叫与您已经使用的呼叫(我已包括在内)相加:

        actionBar.setDisplayShowHomeEnabled(false);     
        actionBar.setDisplayHomeAsUpEnabled(false);
        actionBar.setHomeButtonEnabled(false); 
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayShowCustomEnabled(true);    
    

    这将删除自动应用的左间距。