android 中的按钮形状
Shape of button in android
我如何在 android 上设计这个按钮就像当有人点击我的按钮时右上角的绿色部分应该是可见的。
我知道 state_pressed 但我无法设计它。
在按钮视图的 xml 文件中只需添加
android:background="@drawable/capsule_shape"
根据需要命名可绘制文件并将以下代码添加到可绘制文件 xml 文件中
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomLeftRadius="30dp"
android:bottomRightRadius="30dp"
android:radius="60dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp" />
<solid android:color="#B3E5FC" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<size
android:height="60dp"
android:width="270dp" />
</shape>
注意:-这是胶囊状的,您可以根据自己的选择更改宽度或高度
你可以在这里看到图片
更新:::
我想在我的文本视图中添加一个可绘制的矢量,我将其设置为充当按钮
Drawable drawer_main = getResources().getDrawable(R.drawable.ic_keyboard_arrow_down_black_24dp);
Textview txtCompanyName.setCompoundDrawablesWithIntrinsicBounds(null, null,drawer_main, null);
像在 xml 中为按钮添加文本视图背景,你会得到类似这样的东西,对于状态按下,你可以使用动画作为 onclick 侦听器来为文本视图中的可绘制对象设置动画以执行任何类型你想要的动画
上面的设计有很多种方法,我不知道哪种方法好,但它会按要求工作
这里我创建了两个可绘制的按钮半径形状,第二个是菱形,现在您将根据您的要求管理菱形视图的可见性,例如,如果按钮单击 visible/gone 菱形。
button_round_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="#545454" />
<corners
android:radius="15dp" />
</shape>
dimond_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp">
<rotate android:fromDegrees="45">
<shape>
<size
android:width="5dp"
android:height="5dp" />
<gradient
android:startColor="#4cd964"
android:endColor="#4cd964" />
</shape>
</rotate>
</item>
</layer-list>
xml布局代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:id="@+id/btn"
android:background="@drawable/button_round_shape"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_shape"
android:layout_width="10dp"
android:visibility="gone"
android:layout_toRightOf="@+id/btn"
android:background="@drawable/dimond_shape"
android:layout_marginLeft="-25dp"
android:layout_marginTop="7dp"
android:layout_height="10dp" />
</RelativeLayout>
</RelativeLayout>
JAVA代码
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// PRESSED
btn_shape.setVisibility(View.VISIBLE);
return true; // if you want to handle the touch event
case MotionEvent.ACTION_UP:
// RELEASED
btn_shape.setVisibility(View.GONE);
return true; // if you want to handle the touch event
}
return false;
}
});
我如何在 android 上设计这个按钮就像当有人点击我的按钮时右上角的绿色部分应该是可见的。 我知道 state_pressed 但我无法设计它。
在按钮视图的 xml 文件中只需添加
android:background="@drawable/capsule_shape"
根据需要命名可绘制文件并将以下代码添加到可绘制文件 xml 文件中
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomLeftRadius="30dp"
android:bottomRightRadius="30dp"
android:radius="60dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp" />
<solid android:color="#B3E5FC" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<size
android:height="60dp"
android:width="270dp" />
</shape>
注意:-这是胶囊状的,您可以根据自己的选择更改宽度或高度
你可以在这里看到图片
更新::: 我想在我的文本视图中添加一个可绘制的矢量,我将其设置为充当按钮
Drawable drawer_main = getResources().getDrawable(R.drawable.ic_keyboard_arrow_down_black_24dp);
Textview txtCompanyName.setCompoundDrawablesWithIntrinsicBounds(null, null,drawer_main, null);
像在 xml 中为按钮添加文本视图背景,你会得到类似这样的东西,对于状态按下,你可以使用动画作为 onclick 侦听器来为文本视图中的可绘制对象设置动画以执行任何类型你想要的动画
上面的设计有很多种方法,我不知道哪种方法好,但它会按要求工作
这里我创建了两个可绘制的按钮半径形状,第二个是菱形,现在您将根据您的要求管理菱形视图的可见性,例如,如果按钮单击 visible/gone 菱形。
button_round_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="#545454" />
<corners
android:radius="15dp" />
</shape>
dimond_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp">
<rotate android:fromDegrees="45">
<shape>
<size
android:width="5dp"
android:height="5dp" />
<gradient
android:startColor="#4cd964"
android:endColor="#4cd964" />
</shape>
</rotate>
</item>
</layer-list>
xml布局代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:id="@+id/btn"
android:background="@drawable/button_round_shape"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_shape"
android:layout_width="10dp"
android:visibility="gone"
android:layout_toRightOf="@+id/btn"
android:background="@drawable/dimond_shape"
android:layout_marginLeft="-25dp"
android:layout_marginTop="7dp"
android:layout_height="10dp" />
</RelativeLayout>
</RelativeLayout>
JAVA代码
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// PRESSED
btn_shape.setVisibility(View.VISIBLE);
return true; // if you want to handle the touch event
case MotionEvent.ACTION_UP:
// RELEASED
btn_shape.setVisibility(View.GONE);
return true; // if you want to handle the touch event
}
return false;
}
});