在我试图用 AndroidViewClient 自动化的应用程序中,有一些用 NumberPicker 实现的小部件。使用 AndroidViewClient / culebra 我无法区分这些 NumberPickers 上显示的值/文本。
问问题
259 次
1 回答
1
由于NumberPicker
实施方式,它不会出现在显示其值的转储中。可能还有其他解决方案,但我首先想到的是创建一个包装器并将内容描述设置为值(这也由其他一些视图完成)。
package net.simonvt.numberpicker.samples;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.FrameLayout;
import net.simonvt.numberpicker.NumberPicker;
import net.simonvt.numberpicker.NumberPicker.OnValueChangeListener;
/**
* @author diego
*/
public class NumberPickerHolder extends FrameLayout {
protected static final String TAG = "NumberPickerHolder";
private NumberPicker mNumberPicker;
final OnValueChangeListener mOnValueChangedListener = new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
final String cd = Integer.toString(newVal);
Log.d(TAG, "picker=" + picker + " content description set to " + cd);
setContentDescription(cd);
}
};
/**
* @param context
*/
public NumberPickerHolder(Context context) {
super(context);
init(context);
}
/**
* @param context
* @param attrs
*/
public NumberPickerHolder(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
/**
* @param context
* @param attrs
* @param defStyle
*/
public NumberPickerHolder(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context context) {
mNumberPicker = new NumberPicker(context);
mNumberPicker.setOnValueChangedListener(mOnValueChangedListener);
android.view.ViewGroup.LayoutParams lp = getLayoutParams();
if (lp == null) {
lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
}
addView(mNumberPicker, lp);
}
public void setMaxValue(int i) {
mNumberPicker.setMaxValue(i);
}
public void setMinValue(int i) {
mNumberPicker.setMinValue(i);
}
}
记得在你的布局中使用这个新类
<!-- <net.simonvt.numberpicker.NumberPicker -->
<net.simonvt.numberpicker.samples.NumberPickerHolder
android:id="@+id/numberPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
然后,在您的 culebra 脚本中,您可以获得获取内容描述的值
# class=android.widget.FrameLayout
net_simonvt_numberpicker_samples___id_numberPicker = vc.findViewByIdOrRaise("net.simonvt.numberpicker.samples:id/numberPicker")
print net_simonvt_numberpicker_samples___id_numberPicker.getContentDescription()
于 2014-05-07T21:19:11.460 回答