这个报错是什么问题

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
提问者 慕UI6705487 2018-06-24 08:48:30
  • “但是显示出来的toolbar和我自定义的布局不同,都挤在toolbar的右侧,见最新回复截图”不明白你的意思,这第二张图不是挺正常的嘛。还是说第一张是你的效果图?那你得看一下R.layout.toolbar_layout你的布局文件了,修改一个它们的位置
    2018-06-25 10:09:21
  • 提问者 慕UI6705487 回复 好帮手慕雪 #2
    文件上传时第二张传的比第一张快,下边的就是我的toolbar_layout文件,上边是主页面的效果,为什么会出现这种情况
    2018-06-28 12:56:08
  • 好帮手慕雪 回复 提问者 慕UI6705487 #3
    1)你看一下主页面的布局,是不是没让它的宽度占满全屏。2)两张图片可能存在大小的差异,就算两个一样的大小,并且首次传图时有些资源也需要初始化,理论上也有一些时间差的。
    2018-06-29 10:00:04
irista23 2018-06-22 10:39:22

如果你的style中添加的item是自定义的,需要使用attr在资源文件中声明(系统通过attr找不到textColorPrimary),如果你使用的是系统的属性,就需要添加andorid:,具体修改:参照下图将红框中的代码改成:android:textColorPrimary

http://img1.sycdn.imooc.com//climg/5b2c60a80001445907080412.jpg

  • 提问者 慕UI6705487 #1
    老师,这个问题已经解决,但是显示出来的toolbar和我自定义的布局不同,都挤在toolbar的右侧,见最新回复截图
    2018-06-24 08:48:01
提问者 慕UI6705487 2018-06-22 09:42:51

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zhanlu.share">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".HomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

styles.xml文件

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="AppTheme.Base"></style>

    <style name="AppTheme.Base" parent="Theme.AppCompat">
        <!--将ActionBar隐藏,这里使用ToolBar-->
        <item name="windowActionBar">false</item>
        <!-- 使用 API Level 22以上编译的话,要拿掉前綴字 -->
        <item name="windowNoTitle">true</item>
        <!--colorPrimary 对应ToolBar的颜色-->
        <item name="colorPrimary">@color/toolBarColor</item>
        <!--colorPrimaryDark对应状态栏的颜色-->
        <item name="colorPrimaryDark">@color/statusColor</item>
        <!--colorAccent 对应EditText编辑时、RadioButton选中、CheckBox等选中时的颜色。-->
        <item name="colorAccent">@color/editColor</item>
        <!--窗口的颜色 toolbar下方的区域-->
        <item name="android:windowBackground">@color/widowColor</item>
        <!--textColorPrimary是指我们导航栏中标题的颜色。-->
        <item name="textColorPrimary">@color/textColorPrimary</item>

    </style>

</resources>

color.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--Status bar color-->
    <color name="statusColor">#a60808</color>
    <!-- toolBar color -->
    <color name="toolBarColor">#da0909</color>
    <!--EditText,RadioButton,CheckBox color-->
    <color name="editColor">#000000</color>
    <!--Window color-->
    <color name="widowColor">#ffffff</color>
    <!--textColorPrimary-->
    <color name="textColorPrimary">#ffffff</color>


</resources>

attrs.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyToolbar">
        <attr name="showSearchView" format="boolean"/>
        <attr name="leftButtonIcon" format="reference"/>
        <attr name="rightButtonIcon" format="reference"/>
        <attr name="myTitle" format="string"/>
    </declare-styleable>
</resources>

MyToolbar.java文件

package com.zhanlu.share;


import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v7.widget.Toolbar;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;


public class MyToolbar extends Toolbar {

    private TextView toolbar_title;
    private EditText toolbar_searchview;
    private ImageView toolbar_logo;
    private ImageView toolbar_search;
    private View ChildView;
    private boolean showSearchView;
    private Drawable left_button_icon;
    private Drawable right_button_icon;
    private String title;

    private OnLeftButtonClickListener onLeftButtonClickListener;
    private OnRightButtonClickListener onRightButtonClickListener;

    public MyToolbar(Context context) {
        super(context);
    }

    public MyToolbar(Context context, @Nullable AttributeSet attrs){
        super(context, attrs);

        //把自定义属性通过TypedArray读进来
        TypedArray a=context.obtainStyledAttributes(attrs,R.styleable.MyToolbar);

        showSearchView = a.getBoolean(R.styleable.MyToolbar_showSearchView, false);
        left_button_icon = a.getDrawable(R.styleable.MyToolbar_leftButtonIcon);
        right_button_icon = a.getDrawable(R.styleable.MyToolbar_rightButtonIcon);
        title = a.getString(R.styleable.MyToolbar_myTitle);

        //初始化界面
        initView();
        //初始化监听器
        initListener();

        a.recycle();

    }

    private void initView() {
        if(ChildView==null){
            ChildView=View.inflate(getContext(),R.layout.toolbar_layout,null);

            toolbar_title = (TextView) ChildView.findViewById(R.id.toolbar_title);
            toolbar_searchview = (EditText) ChildView.findViewById(R.id.toolbar_searchView);
            toolbar_logo = (ImageView) ChildView.findViewById(R.id.logo);
            toolbar_search = (ImageView) ChildView.findViewById(R.id.search);
            //添加自定义的布局到Toolbar
            addView(ChildView);

            //这是初始化布局
            if(showSearchView){
                showSearchview();
                hideTitle();
            }else{
                hideSearchview();
                showTitle();
                if(title!=null){
                    toolbar_title.setText(title);
                }
                if (left_button_icon != null) {
                    toolbar_logo.setImageDrawable(left_button_icon);
                }
                if (right_button_icon != null) {
                    toolbar_search.setImageDrawable(right_button_icon);
                }
            }




        }
    }

    /**
     * 设置标题或者搜索框是否显示
     */
    private void showTitle() {
        toolbar_title.setVisibility(View.VISIBLE);
    }
    private void hideTitle() {
        toolbar_title.setVisibility(View.GONE);
    }
    private void showSearchview() {
        toolbar_searchview.setVisibility(View.VISIBLE);
    }

    private void hideSearchview() {
        toolbar_searchview.setVisibility(View.GONE);
    }

    //监听事件
    private void initListener() {

        toolbar_logo.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onLeftButtonClickListener != null) {
                    onLeftButtonClickListener.onClick();
                }
            }
        });

        toolbar_search.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onRightButtonClickListener != null) {
                    onRightButtonClickListener.onClick();
                }
            }
        });
    }

    //让接口外露,以便在主文件中调用
    public interface OnLeftButtonClickListener {
        void onClick();
    }
    public interface OnRightButtonClickListener {
        void onClick();
    }

    public void setOnLeftButtonClickListener(OnLeftButtonClickListener listener) {
        onLeftButtonClickListener = listener;
    }

    public void setOnRightButtonClickListener(OnRightButtonClickListener listener) {
        onRightButtonClickListener = listener;

    }

    /**
     * 重写设置标题的方法
     *
     * @param title
     */
    @Override
    public void setTitle(CharSequence title) {
        toolbar_title.setText(title);
    }

    @Override
    public void setTitle(@StringRes int resId) {
        toolbar_title.setText(resId);
    }
    /**
     * 设置左右按钮的图标
     *
     * @param d
     */
    public void setLeftButtonIconDrawable(Drawable d) {
        toolbar_logo.setImageDrawable(d);
    }

    public void setRightButtonIconDrawable(Drawable d) {
        toolbar_search.setImageDrawable(d);
    }
    /**
     * 标题与搜索框的切换
     */
    public void setShowSearchView() {
        hideTitle();
        showSearchview();
    }
    public void setShowTitleView(String title) {
        hideSearchview();
        showTitle();
        toolbar_title.setText(title);
    }
}


irista23 2018-06-19 09:45:41

检查一下代码textColorPrimary属性值写法是否有误,并且在清单文件中设置的Themeshe否定义了如下属性值

android:textColor="?android:attr/textColorPrimary"

  • 提问者 慕UI6705487 #1
    老师看一下最新回复,我不太懂你说的是哪里,我把几个文件都列出来了
    2018-06-22 09:43:38
jfhdibrbfjd 2018-06-17 10:49:55

看不清啊看不清

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android多媒体开发与应用2018版
  • 参与学习           人
  • 解答问题       241    个

本专题是动画、游戏、音视频等实际应用开发必备技能。课程深入到Android事件总线,利用主流框架实现消息推送、自定义事件统计分析等功能。最后带你开发一款利用传感器实现计步、距离、热量等功能的App。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师