首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过NumberPicker区分AndroidViewClient视图

无法通过NumberPicker区分AndroidViewClient视图
EN

Stack Overflow用户
提问于 2014-05-07 14:12:10
回答 1查看 263关注 0票数 0

在我试图用AndroidViewClient自动化的应用程序中,有一些小部件是用NumberPicker实现的。使用AndroidViewClient / culebra,我无法区分在这些NumberPickers上显示的值/文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 21:19:11

由于NumberPicker是如何实现的,它不会出现在显示其值的转储中。可能还有其他解决方案,但我首先想到的是创建一个包装器,并将内容描述设置为值(这也是由其他一些视图完成的)。

代码语言:javascript
复制
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);
    }

}

请记住在布局中使用这个新类。

代码语言:javascript
复制
    <!--   <net.simonvt.numberpicker.NumberPicker -->
    <net.simonvt.numberpicker.samples.NumberPickerHolder
        android:id="@+id/numberPicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

然后,在culebra脚本中,您可以获得获取内容描述的值。

代码语言:javascript
复制
# 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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23520207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档