更改视图按钮的形状

时间:2018-02-02 06:13:28

标签: android xml button layout drawable

我正在尝试对某些观点进行一些测试。所以我想创建一个具有特定形状的简单按钮。

当它被禁用时,按钮是一个内部没有颜色的矩形,如下所示:

pic 1

enter image description here

我刚刚在xml中使用了一个简单的背景来赋予按钮这个形状(它在drawable中,它的名字是bg_rectangle.xml):

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@+id/listview_background_shape">
    <stroke android:width="2dp" android:color="#ff207d94" />
    <padding android:left="2dp"
        android:top="2dp"
        android:right="2dp"
        android:bottom="2dp" />
    <corners android:radius="5dp" />
    <solid android:color="#ffffffff" />
</shape>

这是xml文件,其中包含布局存放区(main_activity.xml)中的按钮:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.laptoplcvn.test1background.MainActivity">

   <Button
        android:background="@drawable/bg_rectangle"
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

当我点击它时,我希望按钮改变它的形状。我想要这样的东西:

pic 2

enter image description here

我希望能够通过点击时间来编辑时间(00:00和05:15)

编辑后我希望按钮像这样:

pic 3

enter image description here

但我没有太多的想法。我在考虑创建另外三个视图: - 按钮的一个视图为pic 1 - 按钮的一个视图为pic 2 - 按钮的一个视图为pic 3

首先,应用程序显示图片1,然后当点击它时,它使视图pic1不可见,并启用视图图片2,然后在编辑后,它生成不可见的视图图片2并显示图片3&#39;

不确定这是否有效

有什么建议吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

我会尝试简化我的回答,希望它有所帮助。

好吧,首先为Shape Changing创建一个类,如下所示:

&#13;
&#13;
showKeyboard()
&#13;
&#13;
&#13;

现在唯一的问题是,在你的照片(Pic2)中,字母“F&#39; F&#39;那时很大&#39; 00&#39;是小一点然后&#39;到&#39;甚至更小。如果你想保持这种状态,最好只为这些文本创建另一个视图,并添加红色背景,当你点击按钮时,按钮应该消失。

现在,我假设您只想更改按钮而不涉及任何其他视图。

所以,让我们来看一下Click Listener:

&#13;
&#13;
public void setButton(boolean Do, String text, int color) {

  if (Do) {
    YourButton.setText(text);
    // 00:00 and 00:15 to be set on ClickListener

    GradientDrawable shapeDrawable = (GradientDrawable) ContextCompat.getDrawable(mContext, listview_background_shape);

    shapeDrawable.setColor(color);

    YourButton.setBackground(shapeDrawable);

    YourButton.getLayoutParams().height = getResources().getDimensionPixelSize(R.dimen.your_desired_height);
    YourButton.getLayoutParams().width = getResources().getDimensionPixelSize(R.dimen.your_desired_width);


  } else if (!Do) {
    YourButton.setText(text);
    YourButton.setBackgrountTint(color);
  }

};
&#13;
&#13;
&#13;

您应该知道在int Red = ContextCompabt.getColor(mContext, R.color.your_red_color); int DefaultColor = ContextCompabt.getColor(mContext, R.color.your_default_grey_color); MyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if () { setButton(true, "F" + text1 + "to" + text2 + "tap to edit", Red); } else if () { setButton(false, "BUTTON", DefaultColor); } } });中设置高度和宽度不会改变按钮的高度和宽度。所以你需要按钮本身来改变尺寸。

如果答案不充分并且您希望在按钮上显示另一个视图,请告诉我