您的当前位置:首页正文

标题栏---引入布局和自定义控件的使用

2024-11-13 来源:个人技术集锦

自定义标题栏的创建

创建一个标题栏布局对大多数人已经不是问题,但因为每个活动页面基本都会涉及到标题栏的设计,这样代码的重复性大大增加,这个时候就可以使用我们的引入布局。

  • 新建一个title,xml文件
  • <?xml version="1.0" encoding="utf-8"?>

<Button
    android:id="@+id/back"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:textColor="#fff"
    android:hint="@string/back"
    android:textStyle="bold"
    />
<TextView
    android:id="@+id/text"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:layout_weight="1"
    android:textColor="#fff"
    android:textSize="24dp"
    android:hint="@string/text"
    android:textStyle="bold"
    />
<Button
    android:id="@+id/edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:textColor="#fff"
    android:hint="@string/edit"
    android:textStyle="bold"
    />
里面加入了两个按钮和一个TextView 然后在主页面通过 <?xml version="1.0" encoding="utf-8"?>

<include layout="@layout/title"/>

这句代码添加到主页面,注意的是看主页面的布局情况调整 尤其是高度和布局显示。
3.最后在MainActivity.java里面添加两行代码即可。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar =getSupportActionBar();
if(actionBar != null) {
actionBar.hide();
}
}

ActionBar actionBar =getSupportActionBar();这里是通过getSupportActionBar()方法来获取ActionBar ,在条用ActionBar的hide()方法将标题隐藏起来。

自定义控件

引入布局简单的解决了重复编码的问题,但按钮的监听事件,这个就需要我们在每个活动中都取添加监听,而现在有自定义控件就可以解决这种问题,一般我们都会两者一起用。

public class TitleLayout extends LinearLayout {

public TitleLayout(Context context , AttributeSet attrs) {
    super(context,attrs);
    LayoutInflater.from(context).inflate(R.layout.title,this);**
   }
}

2.然后在我们在引入布局中代码中,删除原有的代码,改为:

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


<com.example.pig.TitleLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”/>

最后为在TitileLayout中添加按钮的监听事件就可以。
Top