本文实例为大家分享了Android自定义通用标题栏的具体代码,供大家参考,具体内容如下/p>
1自定义一个public_ bar. 文件
<? version=\"1.0\" encoding=\"utf-8\"?> <LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\" android:id=\"@+id/rootView\" android:layout_width=\"match_parent\" android:layout_height=\"wrap_content\" android:orientation=\"horizontal\"> <ImageView android:id=\"@+id/ivLeft\" android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\" android:src=\"@drawable/z\"/> <LinearLayout android:layout_width=\"wrap_content\" android:layout_height=\"match_parent\" android:layout_weight=\"1\"> <TextView android:id=\"@+id/tv \" android:layout_width=\"match_parent\" android:layout_height=\"wrap_content\" android:layout_weight=\"1\" android:text=\"tv \"/> <TextView android:id=\"@+id/tvRight\" android:layout_width=\"match_parent\" android:layout_height=\"wrap_content\" android:layout_weight=\"1\" android:text=\"tvRight\"/> </LinearLayout> </LinearLayout>
2.在values文件夹下新建一个attrs.
<? version=\"1.0\" encoding=\"utf-8\"?> <resources> <declare-styleable name=\"Customer Bar\"> <attr name=\"left_image\" format=\"reference\"></attr> <attr name=\"center_text\" format=\"string\"></attr> <attr name=\"center_text_color\" format=\"color\"></attr> <attr name=\"center_text_size\" format=\"dimension\"></attr> </declare-styleable> </resources>
3.自定义Customer Bar类继承LinearLayout,统一页面标题栏,项目中包括接口回调
public class Customer Bar extends LinearLayout {
private LinearLayout rootView;
private ImageView ivLeft;
private TextView tv ;
private TextView tvRight;
//3.声明回调对象
private CustomerClick leftClick;
/**
* @param context
*/
//在代码中直接new一个Custom View实例的时候,会调用第一个构造函数
public Customer Bar(Context context) {
this(context,null);
}
//在 布局文件中调用Custom View的时候,会调用第二个构造函数
public Customer Bar(Context context,AttributeSet attrs) {
this(context, attrs,-1);
}
//在 布局文件中调用Custom View,并且Custom View标签中还有自定义属性时,这里调用的还是第二个构造函数.
public Customer Bar(Context context,AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
initAttrs(context,attrs);
initLister();
}
private void init(Context context) {
rootView= (LinearLayout) View.inflate(context,R.layout.layout_customer_ _bar,this);
ivLeft=rootView.findViewById(R.id.ivLeft);
tv =rootView.findViewById(R.id.tv );
tvRight=rootView.findViewById(R.id.tvRight);
}
private void initAttrs(Context context, AttributeSet attrs) {
TypedArray typedArray=context.obtainStyledAttributes(attrs,R.styleable.Customer Bar);
Drawable drawable=typedArray.getDrawable(R.styleable.Customer Bar_left_image);
if (drawable!=null){
ivLeft.setImageDrawable(drawable);
}
CharSequence text = typedArray.getText(R.styleable.Customer Bar_center_text);
if (!TextUtils.isEmpty(text)) {
tv .setText(text);
}
int color = typedArray.getColor(R.styleable.Customer Bar_center_text_color, -1);
if (color != -1) {
tv .setTextColor(color);
}
float dimension = typedArray.getDimension(R.styleable.Customer Bar_center_text_size, 0f);
tv .setTextSize(dimension);
}
private void initLister() {
ivLeft.set Listener(new Listener() {
@Override
public void (View v) {
//5.使用接口回调
if (leftClick!=null){
leftClick.onLefClick(v);
}
}
});
}
//4、提供回调对象的set方法
public void setLeftClick(CustomerClick leftClick) {
this.leftClick = leftClick;
}
//1.定义回调接口
interface CustomerClick{
void onLefClick(View view);
}
}
4.在布局文件中的引用
<com.cn.jyx.customer bar.Customer Bar android:id=\"@+id/ct \" android:layout_width=\"match_parent\" android:layout_height=\"wrap_content\" android:gravity=\"center\" customer:center_text=\"吐泡泡\" customer:center_text_color=\"#ff00ff\" customer:center_text_size=\"20sp\" />
5.在Activity中的用法
public class MainActivity extends AppCompatActivity {
private Customer Bar ct ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ct =findViewById(R.id.ct );
//6、使用
ct .setLeftClick(new Customer Bar.CustomerClick() {
@Override
public void onLefClick(View view) {
Toast.makeText(MainActivity.this,\"吐泡泡\",Toast.LENGTH_LONG).show();
}
});
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
继续阅读与本文标签相同的文章
上一篇 :
模糊控制理论会拿到AI接力棒吗
下一篇 :
易语言HOOKAPI钩子操作代码实例
-
阿里云文件网关备份
2026-05-19栏目: 教程
-
UITableView 组件化
2026-05-19栏目: 教程
-
DBengine 排名第一,云数据库 InfluxDB 版正式商业化!
2026-05-19栏目: 教程
-
阿里有个超神秘的组织,CEO们来了都要翻牌 | 开发者必读(056期)
2026-05-19栏目: 教程
-
云原生计算重塑企业IT架构 - 分布式应用架构
2026-05-19栏目: 教程
