您的位置:首页 > 移动开发 > Android开发

(Android新手上路)actionbar完全自定义标题布局,告别繁琐的actionbar设置,看别人的然后自己琢磨出来的

2017-02-21 11:37 519 查看
首先:定义actionbar的样式:styles.xml

<style name="AppTheme"
parent="AppBaseTheme">

    <item name="android:actionBarStyle">@style/myActionBarStyle</item>
</style>
<style name="myActionBarStyle" parent="android:Widget.ActionBar" >  

        <item name="android:background">@color/blue</item> <!--设置--背景颜色>

        <item name="android:titleTextStyle">@style/ActionBarTitle</item>  

    </style>  

<!--以下内容可以不要,因为自定义的不需要用到系统默认的home,title等-->
<style name="ActionBarTitle" parent="@android:style/TextAppearance.Holo.Large">

    <item name="android:textColor">@android:color/holo_blue_bright</item>

    <item name="android:textSize">20sp</item>
</style>

<style name="CustomActionBar" parent="@android:style/Widget.DeviceDefault.ActionBar">

    <item name="android:titleTextStyle">@style/ActionBarTitle</item>

    <item name="android:subtitleTextStyle">@style/ActionBarSubtitle</item>
</style>
<style name="ActionBarSubtitle" parent="@android:style/TextAppearance.Holo.Medium">

    <item name="android:textColor">@android:color/holo_blue_light</item>

    <item name="android:textSize">16sp</item>
</style>

然后:manifest 修改


<activity

            android:name="stu.main.StuMainOneActivity"

            android:label="@string/title_activity_one"
            android:theme="@style/AppTheme"//添加的style
            >


</activity>


其次:自定义actionbar的layout

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent" >

    

    <TextView  

        android:id="@+id/title"  

        android:layout_width="50dp"  

        android:layout_height="50dp"  

        android:layout_centerInParent="true"  

        android:text="标题"  

 
4000
      android:gravity="center"

        android:textSize="20sp"

        android:textColor="#ffffff"/>

     <ImageView

         android:id="@+id/back"

         android:layout_width="50dp"

         android:layout_height="50dp"

         android:layout_alignParentLeft="true"

         android:layout_centerVertical="true"

         android:background="@color/blue" 

         android:src="@drawable/back"/>

     <ImageView

         android:id="@+id/list"

         android:layout_width="50dp"

         android:layout_height="50dp"

         android:layout_alignParentRight="true"

         android:layout_alignTop="@+id/title"

         android:background="@color/blue"

         android:src="@drawable/list" />

</RelativeLayout>


如下:



最后:activity调用

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity_one);
setCustomActionBar();
}

private void setCustomActionBar() {  
   ActionBar.LayoutParams lp =new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT, Gravity.CENTER);  
   View mActionBarView = LayoutInflater.from(this).inflate(R.layout.actionbar_layout, null);  //加载自定义的layout
   ActionBar actionBar = getActionBar();  
   actionBar.setCustomView(mActionBarView, lp);  
   actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);  
   actionBar.setDisplayShowCustomEnabled(true);  
   actionBar.setDisplayShowHomeEnabled(false);  //关闭系统的home图标显示,必须的
   actionBar.setDisplayShowTitleEnabled(false);//关闭系统的title显示,不然自定义的title显示不出来
   ImageView iv1 = (ImageView) mActionBarView.findViewById(R.id.back);//加载自定义标题中的textview
   TextView tv1 = (TextView) mActionBarView.findViewById(R.id.title);//[b]加载自定义imageview[/b]
   tv1.setText("内容");//设置标题内容
   tv1.setOnClickListener(new OnClickListener() {//也可以添加点击等

@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Toast.makeText(StuMainOneActivity.this,"别点啦",Toast.LENGTH_SHORT).show();
}
});
}

注:关于系统的onOptionsItemSelected和onCreateOptionsMenu必须删除,不然显示会混乱



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: