gpt4 book ai didi

java - 可以获取条目但不能获取重力

转载 作者:行者123 更新时间:2023-11-30 01:53:38 25 4
gpt4 key购买 nike

我基于 AppCompatSpinner 编写了我的微调器。

我想获取条目和重力。这是我的代码:

public class RxSpinner extends AppCompatSpinner {

private static final int[] RX_SPINNER_OVERRIDE_ATTRS = {
android.R.attr.entries,
android.R.attr.gravity
};

public RxSpinner(Context context) {
super(context);
}

public RxSpinner(Context context, AttributeSet attrs) {
super(context, attrs);

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RxSpinner);
final int textColor = a.getColor(R.styleable.RxSpinner_text_color, context.getResources().getColor(R.color.gray_dark));
final int dropdownTextColor = a.getColor(R.styleable.RxSpinner_dropdown_text_color, context.getResources().getColor(R.color.gray_dark));
final float textSize = a.getDimension(R.styleable.RxSpinner_text_size, context.getResources().getDimension(R.dimen.text_normal));
a.recycle();

a = context.obtainStyledAttributes(attrs,RX_SPINNER_OVERRIDE_ATTRS);
if (a.hasValue(0)){
CharSequence[] entries = a.getTextArray(0);
final int gravity = a.getInt(1, Gravity.CENTER); // here is the problem always default value.
//create adapter
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(context, R.layout.item_spinner_top, R.id.text, entries) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView text = ButterKnife.findById(view, R.id.text);
text.setTextColor(textColor);
text.setTextSize(DimenUtils.px2dp(textSize));
text.setGravity(gravity);
return view;
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View dropDownView = super.getDropDownView(position, convertView, parent);
TextView text = ButterKnife.findById(dropDownView, R.id.text);
text.setTextColor(dropdownTextColor);
text.setTextSize(DimenUtils.px2dp(textSize));
text.setGravity(gravity);
return dropDownView;
}
};
adapter.setDropDownViewResource(R.layout.item_spinner_dropdown);
setAdapter(adapter);
}
a.recycle();

//set background tint
ViewCompat.setBackgroundTintList(this, ColorStateList.valueOf(textColor));
}
}

只能获取条目,不能获取重力。

好像是一样的模式,谁能告诉我为什么?

我知道还有其他方法可以获得引力,但我更感兴趣的是原因。

最佳答案

我自己找到了原因。它在 appcompat-v7 包中被覆盖。

<declare-styleable name="Spinner"><attr format="reference" name="prompt"/><attr format="enum" name="spinnerMode"><enum name="dialog" value="0"/><enum name="dropdown" value="1"/></attr><attr name="android:dropDownSelector"/><attr name="android:popupBackground"/><attr name="android:dropDownVerticalOffset"/><attr name="android:dropDownHorizontalOffset"/><attr name="android:dropDownWidth"/><attr format="reference" name="popupPromptView"/><attr name="android:gravity"/><attr format="boolean" name="disableChildrenWhenDisabled"/><attr name="android:background"/></declare-styleable>

所以你可以通过这种方式获取值:

    a = context.obtainStyledAttributes(attrs,android.support.v7.appcompat.R.styleable.Spinner);
final int gravity = a.getInt(android.support.v7.appcompat.R.styleable.Spinner_android_gravity,Gravity.CENTER);
a.recycle();

关于java - 可以获取条目但不能获取重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602982/

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