View布局事项各种坑录 RadioGroup RadioButton TextView ProgressBar

1 篇文章 0 订阅
1 篇文章 0 订阅
  • RadioGroup:

在RadioGroup如果想把某个指定的RadioButton要将所选项取消,使用RadioButton.setCheck(false),会造成再选的时候出现选不中的问题。

解决方案:

在RadioGroup中需要选中其中一个RadioButton时,需要采用radioGroup.check(radioButton.getId()); 方式来选中单选按钮(而不是使用radioButton.setCheck(true); 的方式)

想取消它的选项,直接使用clearCheck();

  • RadioButton:

在使用RadioButton.setOnClickListener的监听时,在里面如果你想确定它的是否已经选中千万不要使用RadioButton.isChecked()方法,因为你点击RadioButton的时候,它就直接返回true,代表着你的判断永远都是true!!!

解决方案:

使用标识符判断时候已经被选中的,再进行逻辑判断

当你在其他的方法在代码中去使用代码mRemarkRadioButton.callOnClick();动态点击它时,它是不会自己被选中的。。RadioButton.setOnClickListener中mRemarkRadioButton.isCheck()返回false!

解决方案:

在对应的mRemarkRadioButton.setOnClickListener()中增加被选中的代码radioButton.setCheck(true);这样,就可以了

  • TextView:

关于排版的问题(中文跟英语或者数字导致排版混乱)
解决方案:
https://blog.csdn.net/zhuqiang1002/article/details/18967027(完美的解决方案,下面的是自己用过的还可以)


//将textview中的字符全角化。即将所有的数字、
//字母及标点全部转为全角字符,使它们与汉字同占两个字节,
//这样就可以避免由于占位导致的排版混乱问题了。
//半角转为全角的代码如下,只需调用即可。

public static String ToDBC(String input) {  
   char[] c = input.toCharArray();  
   for (int i = 0; i< c.length; i++) {  
       if (c[i] == 12288) {  
         c[i] = (char) 32;  
         continue;  
       }if (c[i]> 65280&& c[i]< 65375)  
          c[i] = (char) (c[i] - 65248);  
       }  
   return new String(c);  
}  

关于设置 setTag()属性失效问题:

        mWaitOrderDeleted = (TextView) findViewById(R.id.text_wait_order_receiving);
        mWaitOrderReceiving = (TextView) findViewById(R.id.text_wait_maintenance);
       
 /**
     * 更新接受广播回来的各种维修单的总数修改
     * @param status
     */
    private void updateOperationTypeSumReduce(int status) {
        int sum;
        int oversum;
        switch (status) {
            case 0:
                sum = (int) mWaitOrderDeleted.getTag();
                oversum = sum - 1;
                mWaitOrderDeleted.setTag(oversum);
                mWaitOrderDeleted.setText("已销单:(" + oversum + ")");
                break;
            case 1:
                sum = (int) mWaitOrderReceiving.getTag();
                oversum = sum - 1;
                mWaitOrderReceiving.setTag(oversum);
                mWaitOrderReceiving.setText("待接单:(" + oversum + ")");
                break;
            
        }
    }
    /**上面的代码记得有个bug 当第一次调了该方法数值看起来减一了,但是,第二次第三次开始
    就没有了变化。
    处理方法是**/
    
    mWaitOrderDeleted = (TextView) mLl1.findViewById(R.id.text_wait_order_receiving);
    mWaitOrderReceiving = (TextView)mLl2.findViewById(R.id.text_wait_maintenance);
    
    这个是因为setTag()是这个控件的父控件给的,也就是说,你要使用
    mLl2.findViewById(R.id.text_wait_maintenance);
    而不是直接findViewById(R.id.text_wait_maintenance);
  • ProgressBar:

想修改成自己想要的ProgressBar 其实它就是修改前面跟后面的背景图来达到你想要的效果

<ProgressBar
        android:layout_marginTop="4dp"
        android:id="@+id/bar_progress"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="8"
        android:progressDrawable="@drawable/progressbar_green"
        android:max="100"
        android:progress="60"/>
        
// drawable  ---progressbar_green    
        
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--
        对layer-list样式,是按照顺序堆叠的,所以最上层的放在最后面,而且如果设置了progressDrawable
        的属性,再去设置progressbar的background是没有效果的
        -->
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="10dp" />         <!-- 圆角 -->
            <solid android:color="@color/activity_bg"
                />   <!-- 描边 -->
            <stroke android:color="@color/white"
                android:width="1dp"/>
        </shape>
    </item>
    <item android:id="@android:id/progress">
    <!--注意这里的Tap是clip 再 shape的-->
        <clip>
            <shape>
                <corners android:radius="10dp" />
                <stroke
                    android:width="1dp"
                    android:color="@color/white" />
                <gradient
                    android:angle="0"
                    android:endColor="@color/green"
                    android:startColor="@color/green" />
            </shape>
        </clip>
    </item>
</layer-list>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值