圆形边缘形状按钮未在设备上显示

时间:2016-09-21 00:59:04

标签: java android xml drawable

我一直在Android Studio上使用这个温度转换器应用程序,我正在努力制作一个圆形边缘按钮。我完成了我的研究,使用XML文件到drawable是我的最佳选择。但是,我打算不在主活动xml文件中调整它,而是通过JAVA(因为我希望单击时按钮形状更改为圆角框形状)

现在,我的主要活动java的一部分看起来像

mmBtn.setOnClickListener(new View.OnClickListener() {
         @Override
        public void onClick(View view) {
                mmSelectedClicked[0] = true;
                cmSelectedClicked[0] = false;
                kmSelectedClicked[0] = false;
                miSelectedClicked[0] = false;
                mSelectedClicked[0] = false;
                ydSelectedClicked[0] = false;
                inSelectedClicked[0] = false;

                kmBtn.setBackgroundColor(Color.parseColor("#FFFFFFFF"));
                cmBtn.setBackgroundColor(Color.parseColor("#FFFFFFFF"));
                miBtn.setBackgroundColor(Color.parseColor("#FFFFFFFF"));
                mBtn.setBackgroundColor(Color.parseColor("#FFFFFFFF"));
                ydBtn.setBackgroundColor(Color.parseColor("#FFFFFFFF"));
                inBtn.setBackgroundColor(Color.parseColor("#FFFFFFFF"));
                if(mmSelectedClicked[0] == true){
                    view.setBackground(ColorDrawable.createFromPath("roundbutton"));
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            HscrollView1.smoothScrollTo((int) mmBtn.getX() - 150, 0);
                        }
                    }, 500);
                } else {
                    }
            }
        });

我已实施:

view.setBackground(ColorDrawable.createFromPath("roundbutton"));

将背景(drawable)更改为" roundbutton.xml"在drawable文件夹下。

应用程序没有崩溃,然而,按钮背景显示在无颜色边框矩形框中,我没有在我的" roundbutton.xml"中设置。

enter image description here

如上所示,当我初始化我的应用程序时,xml(可绘制)应用按钮显示为带有丑陋边框线的左按钮框(毫米毫米)。 (fyi,右键是非xml应用按钮,但应该是它应该根据roundbutton.xml显示的颜色。

在我的Android Studio预览中,框似乎在我的roundbutton.xml中显示(完全着色,而不是白框),但在我的实际应用中,它不会显示。

我的圆形按钮xml代码:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <!-- you can use any color you want I used here gray color-->
    <solid android:color="#CEF8D6"/>
    <corners android:radius="10dp"
        android:bottomRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"/>
</shape>

我希望将我的可绘制图像作为按钮的背景,当我按下其他按钮时,它将恢复正常#FFFFFFFF。

如果您有解决此问题的方法,我将非常感激。 : - )

3 个答案:

答案 0 :(得分:0)

您可以尝试使用状态选择器....

在drawable文件夹中创建新文件 selectors.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true" android:drawable="@drawable/roundbutton" />
   <item android:state_focused="true" android:drawable="@drawable/roundbutton" />
   <item android:state_focused="false" android:drawable="@color/defaultColorWhite" />
   <item android:drawable="@color/defaultColorWhite" />
</selector>

并按下按钮

<button
.....

android:background:@drawable/selectors
/>

答案 1 :(得分:0)

你需要在形状中设置size项目!

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <!-- you can use any color you want I used here gray color-->
    <solid android:color="#CEF8D6"/>
    <corners android:radius="10dp"
        android:bottomRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"/>
    <size android:width=xxdp
          android:height=xxdp/>
</shape>

答案 2 :(得分:0)

使用此(增加半径)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <!-- you can use any color you want I used here gray color-->
    <solid android:color="#CEF8D6"/>
    <corners android:radius="30dp"
        android:bottomRightRadius="30dp"
        android:bottomLeftRadius="30dp"
        android:topLeftRadius="30dp"
        android:topRightRadius="30dp"/>
</shape>