
刚学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的布局文件编写欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)