gpt4 book ai didi

android - 以编程方式为自定义 View 设置形状颜色

转载 作者:行者123 更新时间:2023-11-29 02:25:48 26 4
gpt4 key购买 nike

我制作了一个自定义微调器,我正在尝试以编程方式更改自定义 View 中布局的背景。我尝试了很多使用这种方法来更改布局背景,但它不起作用。如何像 xml 代码一样设置背景可绘制对象?

提前致谢。

ExtendSpinner 类:

public class ExtendSpinner extends LinearLayout {

private LinearLayout lay;
private Spinner spinner;
private ImageView img;

public ExtendSpinner(Context context) {
super(context);
init(context, null);
}

public ExtendSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}

public ExtendSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}

private void init(Context context, AttributeSet attrs){
View view = inflate(context, R.layout.layout_spinner, this);
lay = view.findViewById(R.id.spinnerLayout);
spinner = view.findViewById(R.id.spinner);
img = view.findViewById(R.id.spinnerButton);

setShape(lay, GradientDrawable.RECTANGLE, 2, 2, Color.White, Color.Grey);
}


@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void setShape(View v, int shapeType, int cornerRadius, int strokeSize, int backgroundColor, int borderColor) {
GradientDrawable shape = new GradientDrawable();
shape.setShape(shapeType);
shape.setCornerRadius(cornerRadius);
shape.setColor(backgroundColor);
shape.setStroke(strokeSize, borderColor);
v.setBackgroundDrawable(shape);
}
}

布局

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinnerLayout"
android:orientation="horizontal">

<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="4dp"
android:gravity="center"
android:spinnerMode="dropdown"/>

<ImageView
android:id="@+id/spinnerButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>

</LinearLayout>

我使用 ExtendSpinner 的 activity_main.xml

<com.bvtech.toolslibrary.Layouts.ExtendCoordinatorLayout
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:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ActivityMain">

<com.bvtech.toolslibrary.Widget.ExtendSpinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:entries="@array/test_str"
app:shapeType="rectangle"
app:textColor="@color/colorAccent"/>

</com.bvtech.toolslibrary.Layouts.ExtendCoordinatorLayout>

最佳答案

用这个代替inflate

LayoutInflater  mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mInflater.inflate(R.layout.layout_spinner, this, true);

未测试,但可能有效。

关于android - 以编程方式为自定义 View 设置形状颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52289964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com