【问题标题】:Rounded Edge shape button not displaying on device圆边形状按钮未显示在设备上
【发布时间】:2016-09-21 00:59:03
【问题描述】:

我一直在 Android Studio 上开发这个温度转换器应用程序,我正在努力制作一个圆形边缘按钮。我已经完成了研究,将 XML 文件用于可绘制对象是我拥有的最佳选择。但是,我计划不是在主活动 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"));

将背景(可绘制)更改为可绘制文件夹下的“roundbutton.xml”。

应用程序没有崩溃,但是,按钮背景显示在我没有在“roundbutton.xml”中设置的无色边框矩形框中。

如上所示,当我初始化我的应用程序时,xml(drawable)-applied 按钮显示为左按钮框(mm 毫米),边框线很丑。 (仅供参考,右侧按钮是非 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。

如果您对此问题有解决方案,我将不胜感激。 :-)

【问题讨论】:

  • 只有 android:radius="10dp" 在角落里就足够了
  • view.setBackground(ColorDrawable.createFromPath("roundbutton"));陈述是错误的。您可以将其设置为 view.setBackgroundResource(R.drawable.roundbutton);

标签: java android xml drawable


【解决方案1】:

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

在你的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
/>

【讨论】:

    【解决方案2】:

    您需要在形状中设置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>
    

    【讨论】:

      【解决方案3】:

      使用这个(增加半径)

      <?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>
      

      【讨论】:

        猜你喜欢
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多