为了账号安全,请及时绑定邮箱和手机立即绑定

使用com.example.nate.mytopbar.Topbar之后报错

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="   
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=".MainActivity">
    <com.example.nate.mytopbar.Topbar        
android:id="@+id/topbar"        
android:layout_width="match_parent"        
android:layout_height="40dp"  
app:LeftBackground="@drawable/blue_color"       
app:LeftText="Back"      
app:LeftTextColor="#FFFFFF"    
app:rightBackground="@drawable/blue_color"
app:rightText="More"  
app:rightTextColor="#FFFFFF"      
app:title="自定义标题"      
app:titleColor="#123412"     
app:titleSize="10sp"
>
    </com.example.nate.mytopbar.Topbar>
</RelativeLayout>

package com.example.nate.mytopbar;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class Topbar extends RelativeLayout {
   private Button leftbutton;
   private Button rightbutton;
   private TextView tvtitle;
   
   private int leftcolor;
   private Drawable leftbackground;
   private String lefttext;

   private int rightcolor;
   private Drawable rightbackground;
   private String righttext;

   private int titlecolor;
   private float titlesize;
   private String titletext;
   
   private LayoutParams leftparams,rightparams,titleparams;
   
   public Topbar(Context context, AttributeSet attrs) {
       super(context, attrs);

       //拿到自己定义的属性
       TypedArray ta=context.obtainStyledAttributes(attrs,R.styleable.Topbar );
       leftcolor=ta.getColor(R.styleable.Topbar_LeftTextColor,0);
       leftbackground=ta.getDrawable(R.styleable.Topbar_LeftBackground);
       lefttext=ta.getString(R.styleable.Topbar_LeftText);

       rightcolor=ta.getColor(R.styleable.Topbar_rightTextColor,0);
       rightbackground=ta.getDrawable(R.styleable.Topbar_rightBackground);
       righttext=ta.getString(R.styleable.Topbar_rightText);

       titlecolor=ta.getColor(R.styleable.Topbar_titleColor,0);
       titlesize=ta.getDimension(R.styleable.Topbar_titleSize,0);
       titletext=ta.getString(R.styleable.Topbar_title);

       //回收 1.防止浪费资源 2.避免由于一些值的缓存发生错误
       ta.recycle();

       //创建控件
       leftbutton=new Button(context);//context上下文
       rightbutton=new Button(context);
       tvtitle=new TextView(context);

       //为三个控件设置属性
       rightbutton.setTextColor(rightcolor);
       rightbutton.setBackground(rightbackground);
       rightbutton.setText(righttext);

       leftbutton.setTextColor(leftcolor);
       leftbutton.setBackground(leftbackground);
       leftbutton.setText(lefttext);
       
       tvtitle.setText(titletext);
       tvtitle.setTextColor(titlecolor);
       tvtitle.setTextSize(titlesize);
       tvtitle.setGravity(Gravity.CENTER);

       //设置整体布局的背景颜色
       setBackgroundColor(0xFFF59563);

       //为左布局参数,第一属性宽,第二属性高
       leftparams=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
       leftparams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,TRUE);//相对父类左对齐

       //添加控件到viewgroup中
       addView(leftbutton,leftparams);

       rightparams=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
       rightparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,TRUE);

       addView(rightbutton,rightparams);

       titleparams=new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
       titleparams.addRule(RelativeLayout.CENTER_IN_PARENT,TRUE);

       addView(tvtitle,titleparams);
       
   }
}


<?xml version="1.0" encoding="utf-8"?>
<resources>
   <declare-styleable name="Topbar">
       <attr name="title" format="string"/>
       <attr name="titleSize" format="dimension"/>
       <attr name="titleColor" format="color"/>
       <attr name="LeftText" format="string"/>
       <attr name="LeftTextColor" format="color"/>
       <attr name="LeftBackground" format="reference|color"/>
       <attr name="rightText" format="string"/>
       <attr name="rightTextColor" format="color"/>
       <attr name="rightBackground" format="reference|color"/>
   </declare-styleable>
</resources>


错误如图:
http://img1.sycdn.imooc.com//58a90d310001456303770544.jpg


万分感谢


正在回答

4 回答

感觉没什么,你自己这么写就行了呗!

0 回复 有任何疑惑可以回复我~

你试试rebuild

0 回复 有任何疑惑可以回复我~

xmlns:app="http://schemas.android.com/apk/res-auto"  加上这句

0 回复 有任何疑惑可以回复我~

我也遇到了。。。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android UI模板设计
  • 参与学习       76052    人
  • 解答问题       223    个

快来学习如何在Android中自定义View,本次课程一定会让你获益匪浅

进入课程

使用com.example.nate.mytopbar.Topbar之后报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信