android statelistdrawable在代码中的动态设置

   2024-10-01 4330
核心提示:在Android中,StateListDrawable 是一个用于根据状态(如按下、选中等)动态改变图像的 Drawable。要在代码中动态设置 StateList

在Android中,StateListDrawable 是一个用于根据状态(如按下、选中等)动态改变图像的 Drawable。要在代码中动态设置 StateListDrawable,请遵循以下步骤:

创建一个 StateListDrawable 对象。为不同的状态添加相应的 Drawable。将 StateListDrawable 设置为视图的背景或图像。

以下是一个简单的示例,展示了如何在代码中动态设置 StateListDrawable

import android.graphics.drawable.Drawable;import android.graphics.drawable.GradientDrawable;import android.graphics.drawable.StateListDrawable;import android.os.Bundle;import android.view.View;import android.widget.Button;import androidx.appcompat.app.AppCompatActivity;import androidx.core.content.ContextCompat;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = findViewById(R.id.button);        // 创建一个 StateListDrawable 对象        StateListDrawable stateListDrawable = new StateListDrawable();        // 创建一个 Drawable 对象,表示按下状态的背景        GradientDrawable pressedDrawable = new GradientDrawable();        pressedDrawable.setColor(ContextCompat.getColor(this, R.color.pressed_color));        // 创建一个 Drawable 对象,表示默认状态的背景        GradientDrawable defaultDrawable = new GradientDrawable();        defaultDrawable.setColor(ContextCompat.getColor(this, R.color.default_color));        // 为不同的状态添加相应的 Drawable        int[] pressedState = {android.R.attr.state_pressed};        stateListDrawable.addState(pressedState, pressedDrawable);        stateListDrawable.addState(new int[]{}, defaultDrawable);        // 将 StateListDrawable 设置为按钮的背景        button.setBackground(stateListDrawable);    }}

在这个示例中,我们首先创建了一个 StateListDrawable 对象。然后,我们创建了两个 GradientDrawable 对象,分别表示按下状态和默认状态的背景。接下来,我们使用 addState() 方法为不同的状态添加相应的 Drawable。最后,我们将 StateListDrawable 设置为按钮的背景。

注意:在实际项目中,你可能需要根据需求调整示例代码。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号