【发布时间】: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);