Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListView中将渐变效果添加到TextView会生成NPE_Android_Nullpointerexception_Gradient_Textview - Fatal编程技术网

Android 在ListView中将渐变效果添加到TextView会生成NPE

Android 在ListView中将渐变效果添加到TextView会生成NPE,android,nullpointerexception,gradient,textview,Android,Nullpointerexception,Gradient,Textview,我已经尝试将渐变效果添加到TextView。但是它生成了一个NPE(我觉得idto是罪魁祸首,但事实并非如此) 我的活动: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); TextView textView = (Text

我已经尝试将渐变效果添加到
TextView
。但是它生成了一个
NPE
(我觉得
id
to是罪魁祸首,但事实并非如此)

我的
活动

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        TextView textView = (TextView)findViewById(R.id.label);        
        Shader textShader=new LinearGradient(0, 0, 0, 20,
                new int[]{Color.GREEN,Color.BLUE},
                new float[]{0, 1}, TileMode.CLAMP);
        textView.getPaint().setShader(textShader);


        // storing string resources into Array
        String[] menulist = getResources().getStringArray(R.array.menulist);      

        // Binding resources Array to ListAdapter
        this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, menulist));



    }
我觉得我错过了一些明显的东西

如果有任何其他方法可以获得具有渐变颜色效果的列表,请随时提出建议。

尝试以下方法:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);

    final Shader shader = new LinearGradient(0, 0, 0, 20,
            new int[]{Color.GREEN,Color.BLUE},
            new float[]{0, 1}, Shader.TileMode.CLAMP
    );
    // storing string resources into Array
    final String[] menulist = getResources().getStringArray(R.array.menulist);

    // Binding resources Array to ListAdapter
    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, menulist) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final View view = super.getView(position, convertView, parent);
            final TextView label = (TextView) view.findViewById(R.id.label);

            label.getPaint().setShader(shader);
            return view;
        }
    });
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE\u NO\u TITLE);
最终着色器=新的LinearGradient(0,0,0,20,
新int[]{Color.GREEN,Color.BLUE},
新浮点[]{0,1},Shader.TileMode.CLAMP
);
//将字符串资源存储到数组中
最后一个字符串[]menulist=getResources().getStringArray(R.array.menulist);
//将资源数组绑定到ListAdapter
this.setListAdapter(新的ArrayAdapter(this,R.layout.list_项,R.id.label,菜单列表){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终视图=super.getView(位置、转换视图、父视图);
最终TextView标签=(TextView)view.findViewById(R.id.label);
label.getPaint().setShader(着色器);
返回视图;
}
});
}

仍在第行获得一个
NPE
:label.getPaint().setShader(着色器)textView.getPaint().setShader(textShader)上给出了一个
NPE
ooops,my bad=(应该是
view.findViewById
而不是
findViewById
。我已经更新了我的答案!我会投票,也许会接受。但有趣的是,它不符合我的目的。文本有渐变,我希望文本的背景有渐变。唉!
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);

    final Shader shader = new LinearGradient(0, 0, 0, 20,
            new int[]{Color.GREEN,Color.BLUE},
            new float[]{0, 1}, Shader.TileMode.CLAMP
    );
    // storing string resources into Array
    final String[] menulist = getResources().getStringArray(R.array.menulist);

    // Binding resources Array to ListAdapter
    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, menulist) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final View view = super.getView(position, convertView, parent);
            final TextView label = (TextView) view.findViewById(R.id.label);

            label.getPaint().setShader(shader);
            return view;
        }
    });
}