Android去除默认的Title,自定义TitleBar

Android去除默认的Title,自定义TitleBar,第1张

刚学Android开发的时候,由于android默认的titlebar色彩样式单一,你是不是也经常对下列图片的title不满意呢?

这篇文章将介绍如何删除默认的titlebar并自定义自己的titlebar。

去除默认的Title

在当前Activity的java代码中的onCreate()方法中增加下列语句,且必须加在:setContentView(R.layout.XXXXXXX)前面!

注意不同的继承情况!

  • 如果当前Activity继承自AppCompatActivity
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
  • 如果当前Activity继承自Activity
requestWindowFeature(Window.FEATURE_NO_TITLE);
  • 其它完整处理方法见这篇博客
代码
  • titlebar.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="match_parent"
   android:layout_height="50dp"
   android:gravity="center_vertical"
   android:background="#00ccff">

   <ImageView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="8dp"
       android:src="@drawable/icon" />

   <EditText
       android:id="@+id/et_search"
       android:clickable="true"
       android:gravity="left|center_vertical"
       android:hint="在这里搜索"
       android:maxLines="1"
       android:inputType="text"
       android:textColor="@drawable/search_text_color_selecter"
       android:drawablePadding="5dp"
       android:layout_weight="1"
       android:background="@drawable/search_bg_selecter"
       android:layout_marginLeft="8dp"
       android:layout_marginRight="8dp"
       android:drawableLeft="@drawable/search_left_selecter"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
   <RelativeLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">
       <TextView
           android:id="@+id/iv_todo"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:drawableLeft="@drawable/todo"/>
       <ImageView
           android:background="@drawable/hongdian"
           android:layout_alignRight="@+id/iv_todo"
           android:layout_width="6dp"
           android:layout_height="6dp"/>
   RelativeLayout>
   <ImageView
       android:id="@+id/iv_history"
       android:layout_marginLeft="8dp"
       android:layout_marginRight="8dp"
       android:background="@drawable/history"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
LinearLayout>
  • activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <include layout="@layout/titlebar"/>
RelativeLayout>
  • MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }
}
  • 未点击时的背景样式文件search_bg_normal.xml

android:shape="rectangle"定义为矩形,圆角为12.0dp


<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="12.0dp"/>
    <padding android:bottom="5dp"
        android:left="8dp"
        android:right="8dp"
        android:top="5dp"/>
    <solid android:color="#ff2697ca"/>
shape>
  • 点击时的背景样式文件search_bg_pressed.xml

与上一个未点击时的样式文件search_bg_normal不同的就是颜色发生的变化,形成最终点击时会改变颜色的效果


<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="12.0dp"/>
    <padding android:bottom="5dp"
        android:left="8dp"
        android:right="8dp"
        android:top="5dp"/>
    <solid android:color="#cc2679ca"/>
shape>
  • 背景选择器search_bg_selecter.xml

此选择器分别指定了android:state_pressed="false"未点击和android:state_pressed=“true” 点击两个状态的不同显示,这两个不同的显示由两个shape文件来指定其样式


<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:drawable="@drawable/search_bg_normal"/>
    <item android:state_pressed="true" android:drawable="@drawable/search_bg_pressed"/>
selector>
  • 左边放大镜图的选择器search_left_selecter.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:drawable="@drawable/sousuo_press"/>
    <item android:state_pressed="true" android:drawable="@drawable/sousuo"/>
selector>
  • 文字颜色选择器search_text_color_selecter.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:color="#99ffffff"/>
    <item android:state_pressed="true" android:color="#ffffffff"/>
selector>
效果

是不是好看多了呢?虽然我的图片不好看,临时搜集凑的。

drawable资源

图片源自网络,仅用于学习交流!
hongdian.jpg

history.jpg

todo.jpg

search.jpg

search_press.jpg

logo.jpg

参考文章:Titlebar的布局文件编写

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/795976.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-06
下一篇2022-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存