zoukankan      html  css  js  c++  java
  • 自定义标题栏

    要实现的有back和edit键的颜色渐变和简单的监听事件

    新建一个res/drawable/blue_selector

    <!-- 先为蓝色,按下后为灰色,需要在灰色后加android:state_pressed="true"-->
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:drawable="@drawable/gray_bg" android:state_pressed="true"/>
        <item android:drawable="@drawable/blue_bg"/>
    
    </selector>

    新建一个res/drawable/blue_bg

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <gradient
            android:angle="45"
            android:endColor="@+color/gray"
            android:startColor="@+color/blue" />
    <!-- 这里是实现渐变效果的,第一个角度为45度, 刚开始的颜色和最后的颜色,还有颜色要在values中建立以个color.xml文件并声明颜色的属性--> <corners android:radius="5dp" /> <!-- <solid android:color="@+color/blue" />不能一起,否则会覆盖 --> </shape>

    <!--新建一个res/drawable/gray_bg-->
    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="5dp" /> <solid android:color="@+color/gray" /> </shape>
    <!-- 颜色声明:新建res/values/color-->
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <color name="white">#FFFFFF</color>
        <color name="red">#FF0000</color>
        <color name="gray">#F0F0F0</color>
        <color name="blue">#5CACEE</color>
    
    </resources>

    新建一个res/layout/biaoti.xml文件

    引入一张图片ic_dog到drawable_hdpi  

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:baselineAligned="true" >
    
        <Button
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="5dip"
            android:background="@drawable/blue_selector"
            android:text="Back" />
    
        <TextView
            android:id="@+id/text"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:background="@drawable/ic_dog"
            android:gravity="left|center"
            android:text="Hello"
            android:textSize="25sp" />
    
        <Button
            android:id="@+id/img1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="5dip"
            android:background="@drawable/blue_selector"
            android:text="Edit" />
    
    </LinearLayout>

    然后加一句话到activity_main中既可

        <include layout="@layout/biaoti" />把布局到入。

    package com.example.titlebar;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity implements OnClickListener {
        private Button bt;
        private Button bt2;
        private TextView textView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏原来的标题
            setContentView(R.layout.activity_main);
            bt = (Button) findViewById(R.id.img);
            bt2 = (Button) findViewById(R.id.img1);
            textView = (TextView) findViewById(R.id.text);
            bt.setOnClickListener(this);
            bt2.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "edit", Toast.LENGTH_SHORT)
                            .show();
                }
            });
        }
    
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Toast.makeText(MainActivity.this, "back", Toast.LENGTH_SHORT).show();
        }
    }

    如果标题栏没有铺满原有的标题栏,则在res/values/styles中加一句话

    <resources>
    
        <!--
            Base application theme, dependent on API level. This theme is replaced
            by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
        -->
        <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
            <!--
                Theme customizations available in newer API levels can go in
                res/values-vXX/styles.xml, while customizations related to
                backward-compatibility can go here.
            -->
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
            <item name="android:padding">0sp</item><!-- 加padding 0-->
            <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        </style>
    
    </resources>

    加载自定义布局

    <!-- res/layout/title.xml布局文件-->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="60dp" android:background="@drawable/ic_xinkong" android:orientation="horizontal" > <Button android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/blue_selector" android:text="@string/text_back" /> <TextView android:id="@+id/text" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="@string/text_biaoti" android:textSize="25sp" /> <Button android:id="@+id/img1" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/blue_selector" android:text="@string/text_edit" /> </LinearLayout>
    <!-- res/layout/activity.xml布局文件-->

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.title.MainActivity" > <com.example.title.FActivity android:layout_width="match_parent" android:layout_height="wrap_content" > </com.example.title.FActivity> </RelativeLayout>
    <!-- 新建res/drawable文件 并建blue_bg, gray_bg,blues_selector-->
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <corners android:radius="40dp" />
    
        <gradient
            android:angle="45"
            android:endColor="@color/gray"
            android:startColor="@color/blue" />
        
    
    </shape>
    
    
    
    
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
          <corners android:radius="40dp" />
          <solid android:color="@color/gray"/>
    
    </shape>
    
    
    
    
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:drawable="@drawable/gray_bg" android:state_pressed="true"/>
        <item android:drawable="@drawable/blue_bg"/>
    
    </selector>

    在Mainactivity中

    package com.example.title;
    
    import android.support.v7.app.ActionBarActivity;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.Window;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);//取消原有的标题
            setContentView(R.layout.activity_main);
        }
    
    }

    在Factivity中

    package com.example.title;
    
    import android.app.Activity;
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.Toast;
    
    public class FActivity extends LinearLayout {
    
        public FActivity(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
            LayoutInflater.from(context).inflate(R.layout.title, FActivity.this);
            Button backButton = (Button) findViewById(R.id.img);
            Button edButton = (Button) findViewById(R.id.img1);
            backButton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    ((Activity) getContext()).finish();// 而getContext()得到的是this,就相当于this.finish(),
                    // 其实一般我们在Activity里直接finish()是一种简写
                }
            });
    
            edButton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getContext(), "edit a ad", Toast.LENGTH_SHORT)
                            .show();
                }
            });
        }
    
    }

    要在AndroidManifest.xml文件中加入

     <activity
                android:name=".FActivity"
                android:label="@string/app_name" >
            </activity>
  • 相关阅读:
    GCD
    常用存储位置
    AFNetworking 不支持 text/plain,unacceptable content-type: text/plain
    iOS layer 动画
    自定义对象实现copy,遵守协议<NSCopying, NSMutableCopying>
    Objective-c学习笔记03——内存管理
    Objective-c学习笔记02——类(面向对象)01
    Objective-c学习笔记01——简介
    Objective-c——NSString
    开源网站
  • 原文地址:https://www.cnblogs.com/yi-mi-yangguang/p/5795146.html
Copyright © 2011-2022 走看看