自定义控件不显示问题

问题描述

自定义控件不显示问题
自定义属性
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="Bottom">
        <attr name="oneText" format="string"/>
        <attr name="twoText" format="string"/>
        <attr name="threeText" format="string"/>
        <attr name="oneTextSize" format="dimension"/>
        <attr name="twoTextSize" format="dimension"/>
        <attr name="ThreeTextSize" format="dimension"/>
        <attr name="oneTextColor" format="color"/>
         <attr name="twoTextColor" format="color"/>
          <attr name="ThreeTextColor" format="color"/>
        <attr name="oneImageIcon" format="reference|color"/>
        <attr name="twoImageIcon" format="reference|color"/>
        <attr name="threeImageIcon" format="reference|color"/>
        <attr name="backColor" format="color"/>

    </declare-styleable>
</resources>

引用

 <com.example.myappzdybottom.zdy.MyBottom
       android:layout_width="fill_parent"
       android:layout_height="200dp"
     mybottom:oneText="第一个"
       mybottom:twoText="第二个"
     mybottom:oneTextSize="8sp"
       mybottom:oneTextColor="#FFFFFF"
       mybottom:twoTextColor="#FF0000"
   ></com.example.myappzdybottom.zdy.MyBottom>

自定义view

 public class MyBottom extends RelativeLayout{

    //定义自定义属性对应的控件
    private TextView textview01,textview02,textview03;
    private ImageView imageview01,imageview02,imageview03;
    private String text01,text02,text03;
    private Drawable drawable01,drawable02,drawable03;
    private int textColor01,textColor02,textColor03,backColor;
    private float textSize;

    private LinearLayout ll01,ll02,ll03;

    public MyBottom(Context context, AttributeSet attrs) {
        super(context, attrs);

        //建立映射
        TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attrs, R.styleable.Bottom);

        text01=obtainStyledAttributes.getString(R.styleable.Bottom_oneText);
        text02=obtainStyledAttributes.getString(R.styleable.Bottom_twoText);
        text03=obtainStyledAttributes.getString(R.styleable.Bottom_threeText);
        drawable01=obtainStyledAttributes.getDrawable(R.styleable.Bottom_oneImageIcon);
        drawable02=obtainStyledAttributes.getDrawable(R.styleable.Bottom_twoImageIcon);
        drawable03=obtainStyledAttributes.getDrawable(R.styleable.Bottom_threeImageIcon);
        textColor01=obtainStyledAttributes.getColor(R.styleable.Bottom_oneTextColor, 0);
        textColor02=obtainStyledAttributes.getColor(R.styleable.Bottom_twoTextColor, 0);
        textColor03=obtainStyledAttributes.getColor(R.styleable.Bottom_ThreeTextColor, 0);
        backColor=obtainStyledAttributes.getColor(R.styleable.Bottom_backColor, 0);
        textSize=obtainStyledAttributes.getDimension(R.styleable.Bottom_oneTextSize, 0);

        obtainStyledAttributes.recycle();

        //实例化控件
        textview01=new TextView(context);
        textview02=new TextView(context);
        textview03=new TextView(context);
        imageview01=new ImageView(context);
        imageview02=new ImageView(context);
        imageview03=new ImageView(context);

        textview01.setText(text01);
        textview02.setText(text02);
        textview03.setText(text03);

        textview01.setTextColor(textColor01);
        textview02.setTextColor(textColor01);
        textview03.setTextColor(textColor01);

        textview01.setTextSize(textSize);
        textview02.setTextSize(textSize);
        textview03.setTextSize(textSize);

        imageview01.setBackground(drawable01);
        imageview02.setBackground(drawable02);
        imageview03.setBackground(drawable03);

        LayoutParams llParams=new LayoutParams(80, LayoutParams.MATCH_PARENT );
        llParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, TRUE);

        LayoutParams llParams02=new LayoutParams(150, LayoutParams.MATCH_PARENT);
        llParams02.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, TRUE);

        ll01=new LinearLayout(context);
        ll02=new LinearLayout(context);
        ll03=new LinearLayout(context);

        ll01.setBackgroundColor(Color.BLACK);
        ll02.setBackgroundColor(Color.BLUE);

    /*  ll01.setOrientation(LinearLayout.VERTICAL);
        ll02.setOrientation(LinearLayout.VERTICAL);
        ll03.setOrientation(LinearLayout.VERTICAL);

        LayoutParams textParams=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        LayoutParams imageParams=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        textview01.setGravity(Gravity.CENTER_HORIZONTAL);*/

        LayoutParams textParams=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ll01.addView(textview01, textParams);
        //ll01.addView(imageview01, imageParams);
        ll02.addView(textview02,textParams);
        //ll02.addView(imageview02, imageParams);
        /*ll03.addView(textview03, imageParams);
        ll03.addView(imageview03, imageParams);*/

        addView(ll01,llParams);
        addView(ll02,llParams02);

    }

想在父view中添加三个字view为LinearLayout 这个可以 但是在子view中在添加TextView 就不行了 TextView 就是不显示 找不到原因,也没报错,请大神指教!!! 万分感谢!!!!

解决方案

自定义控件在sumsung手机上第一次显示 第二次 不显示子控件的问题解决
用户自定义控件 界面 不显示问题
解决自定义控件闪烁的问题
----------------------

解决方案二:

imageParams的问题,单次使用有效

解决方案三:

imageParams的问题,单次使用有效

解决方案四:

没有用imageParams 我有运行了一下

<com.example.myappzdybottom.zdy.MyBottom
android:layout_width="fill_parent"
android:layout_height="200dp"
mybottom:oneText="第一个"
mybottom:twoText="第二个"
mybottom:oneTextSize="8sp"
mybottom:oneTextColor="#FFFFFF"
mybottom:twoTextColor="#FF0000"

 中引用的属性的值  在自定义的view中打印为null   oneText打印为null   自定义属性的值好像不能在自定义view中引用过来  不知道为什么

解决方案五:

你调试的结果是什么?看下obtainStyledAttributes 的值

时间: 2024-10-23 21:21:31

自定义控件不显示问题的相关文章

android-Android addview自定义控件不显示问题

问题描述 Android addview自定义控件不显示问题 为什么我在onCreat中addview一个自定义控件能够正常显示,但是在onWindowsFoucsChanged里面addview总是显示不出来 解决方案 你可以在oncreate 中 添加 然后再 onWindowFocusChanged 中设置 宽高 解决方案二: 把进去的view,addview之前,先用view.merits(0,0)测量一下,再加进去 解决方案三: 把进去的view,addview之前,先用view.me

Android 自定义控件实现显示文字的功能

Android 自定义控件实现显示文字的功能 自定义控件-–逐个显示文字 ONE Goal ,ONE Passion ! 前言: 今天要实现的效果时.让我们的文字一个一个显示出来.上效果图吧: 实现原理: 1,拿到要显示的文字. 2,计算文字显示的速率 字体显示的速度 v = 总的字体长度 / 总的显示时间 3,将文字根据速率显示到控件上. 自定义View: public class printTextView extends TextView { /** * 字体显示出来的时间 */ priv

Android自定义控件制作显示进度的Button_Android

最近看到一些应用在下载文件的时候,并没有额外弹出进度条,而是很炫的使用启动下载任务的Button直接显示文件的下载进度,通过改变其背景色,从左向右推进,直到填满整个Button时,意味着下载任务的完成. 除了这种效果,还看到某酷的视频客户端,在观看过的视频对应的按钮上,会给该按钮添加一个描边效果,4条边,每条边代表25%的进度,由上沿开始,顺时针最终到左边沿,则代表100%的进度,这种效果也很不错. 自己也研究了一下,写了个自定义的button,下面是效果,  普通的填充效果:  描边的效果: 

设置自定义控件在工具箱中显示的图标

问题描述 自己做了个简单的控件,想在工具箱中换掉小齿轮的图标,可是查了好多方法都不行啊,不知道为什么?大概方法有:设定ToolBoxBitmap特性:将图标设为内嵌资源都不成功,晕了.好像有人说是需要手动编译控件项目,vs自带编译器不行,不知道是不是这个原因,高手指教 解决方案 解决方案二:没有遇见过这个问题!解决方案三:在工具箱里面选择项添加dll

Android自定义控件制作显示进度的Button

最近看到一些应用在下载文件的时候,并没有额外弹出进度条,而是很炫的使用启动下载任务的Button直接显示文件的下载进度,通过改变其背景色,从左向右推进,直到填满整个Button时,意味着下载任务的完成. 除了这种效果,还看到某酷的视频客户端,在观看过的视频对应的按钮上,会给该按钮添加一个描边效果,4条边,每条边代表25%的进度,由上沿开始,顺时针最终到左边沿,则代表100%的进度,这种效果也很不错. 自己也研究了一下,写了个自定义的button,下面是效果, 普通的填充效果: 描边的效果: 自定

VTK+MFC:建立自定义控件显示

这里我们用MFC框架来做VTK的界面 VTK比较蛋疼的是不能像图片一样直接在MFC的picture控件中显示,需要自己添加自定义控件来显示画出的模型, 1.首先新建一个类如MyCustomControl Ctrl+W打开建立类向导界面,选择Add Class->new 名字填写如MyCustomControl Base class选择generic CWnd 2.在MyCustomControl.cpp文件中添加如下代码: 注册代码: BOOL MyCustomControl::Register

如何点击窗体按钮显示自定义控件当中的数据

问题描述 我自定义了一个控件里面一个button一个datagridview点击button可以显示数据现在新建一个winform项目在窗体把自定义控件拖进去再在窗体中添加个按钮要实现点击按钮可以显示自定义控件当中显示的数据.求解啊 解决方案 解决方案二:什么乱七八糟的,自定义控件发布一个方法,比如GetData,你调用一下,自定义中就可以去获取数据,如果要访问grid,那可以把grid的modifers属性设置为public,这样就可以直接通过实例yourcontrol.datagridvie

自定义控件在开发过程中看不到效果怎么回事,请高手帮忙。

问题描述 控件中放了几个按钮,把控件放到窗口上时只能看到窗口所在的名称空间和类名,不能看到任何一个按钮.不过有时候就是可以看到效果,是不是设置问题,还是是开发方法不对.请八方仙人帮忙. 解决方案 解决方案二:写好控件后如果不是在同一个项目里,需要编译(生成)项目才能正确的使用.解决方案三:我是放在同一个项目里的,我已经编译过了.还是不行解决方案四:看不到效果是什么意思?是设计器里看不到按钮还是编辑器IntelliSense里显示不出?你按钮的访问权限设成public了么?解决方案五:是在开发时,

无限树Jquery插件zTree的常用功能特性总结

 其实Ztree官网已经有详细的API文档,一切以官网上的说明为准,我在此只是结合实践总结几条常用的ztree的功能特性. (ztree的语法结构是基于key-value的形式配置) 1:支持异步加载数据 语法配置:   1 async: { 2 enable: true,  3    4 url:'abc.ashx', 5    6 otherParam: { "request": "requestname" } 7    8 } 简要说明: enable :设置