web-dev-qa-db-fra.com

Supprimer l'ombre du haut et du bas de ListView dans Android?

J'ai créé un listView personnalisé avec la ligne comme suit:

 <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:layout_width="fill_parent"  Android:id="@+id/lay1" 
  Android:layout_height="wrap_content" Android:background="#ffffff">

  <TextView Android:layout_width="fill_parent" Android:textColor="#000000" Android:id="@+id/text"
  Android:layout_height="wrap_content" Android:layout_toRightOf="@+id/check" 
  Android:textSize="15dip" Android:paddingBottom="5dip" Android:paddingRight="10dip" Android:paddingLeft="10dip"></TextView>

  <Button Android:id="@+id/check"  Android:layout_centerVertical="true"
          Android:background="@drawable/uncheck" Android:layout_width="wrap_content"
          Android:layout_height="wrap_content" Android:visibility="gone"></Button>

  <EditText Android:layout_width="fill_parent" Android:textColor="#000000" Android:id="@+id/edit"
  Android:layout_height="wrap_content"  Android:background="@null" Android:layout_below="@+id/text"
  Android:textSize="15dip" Android:paddingTop="5dip" Android:paddingRight="10dip" Android:paddingLeft="10dip"
  Android:layout_toRightOf="@+id/check" Android:paddingBottom="5dip" ></EditText>

</RelativeLayout>

Et le code listview utilisé dans mon xml principal est:

<ListView Android:layout_width="450dip" Android:background="#FFFFFF" Android:layout_height="340dip" 
  Android:layout_marginLeft="9dip" Android:layout_marginTop="10dip"  Android:id="@+id/mainlist1" 
  Android:divider="@drawable/grayline" 
    Android:cacheColorHint="#00000000" ></ListView>

Et l'adaptateur utilisé est le suivant:

public class Adapter extends BaseAdapter {


        ArrayList<Row> row;
        private Context context;


        public Adapter(Context context, ArrayList<SongRow> songrow) {

            this.context = context;
            this.row = row;

        }

        public int getCount() {

            return row.size();
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {

            long sub_id = row.get(position).getSub_id();
            String sub_title = row.get(position).getSub_title();
            String sub_text = row.get(position).getSub_text();

            if (convertView == null) {
                LayoutInflater inflat = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflat.inflate(R.layout.mainrow, null);

            } else {
                LayoutInflater inflat1 = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflat1.inflate(R.layout.mainrow, null);
                            }
            final TextView name = (TextView) convertView.findViewById(R.id.text);
            final EditText et = (EditText) convertView.findViewById(R.id.edit);
            name.setText(sub_title);
            et.setText(sub_text);
            et.setFilters(new InputFilter[] { new InputFilter() {
                public CharSequence filter(CharSequence src, int start,
                        int end, Spanned dst, int dstart, int dend) {
                       InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                       mgr.hideSoftInputFromWindow(et.getWindowToken(),0);
                       et.setCursorVisible(false);
                       return dst.subSequence(dstart, dend);    

                }
            } });
            et.setOnFocusChangeListener(new OnFocusChangeListener() {

                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    // TODO Auto-generated method stub
                    if (hasFocus) {
                         InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                         mgr.hideSoftInputFromWindow(et.getWindowToken(),0);
                         et.setCursorVisible(false);
                    }
                }

            });
            et.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                     InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                     mgr.hideSoftInputFromWindow(et.getWindowToken(),0);
                     et.setCursorVisible(false);

                }
            });
            return convertView;
        }
    }

Et adaptateur appelé dans l'activité principale par le code comme suit:

Adapter s = new Adapter(MainActivity.this, row);
            mainlist.setAdapter(s);
            mainlist.setSelection(length-1);

Mon codage fonctionne bien. Mon problème est que lorsque vous affichez listview qui est déroulable, vous faites tomber une ombre en haut et en bas de listview et je ne veux pas l'afficher. Comment puis-je enlever cette ombre?

Merci d'avance

45
Nikki

Je suppose que vous parlez de la décoloration des bords. Pour les désactiver:

Android:fadingEdge="none"

ou

listView.setVerticalFadingEdgeEnabled(false);

METTRE À JOUR

Comme Pim Reijersen l'a souligné dans les commentaires, Android:fadingEdge est obsolète et sera ignoré à partir de l'API de niveau 14. Veuillez utiliser:

Android:fadingEdgeLength="0dp"
111
Romain Piel

Android:fadingEdgeLength n'a pas fonctionné pour moi j'ai utilisé et bien travaillé avec Android:overScrollMode="never" 

Ajoutez Android:overScrollMode="never" à votre ScrollView 

45
Chathura Wijesinghe

Utilisez ceci dans votre ScrollView XML:

Android:overScrollMode="never"

Vous pouvez définir "toujours", "jamais" ou "ifContentScrolls".

6
nlmm01

C'est un travail pour moi

Android:fadeScrollbars="false"
Android:fadingEdge="none"
Android:fadingEdgeLength="0dp"
Android:cacheColorHint="#00000000"
Android:overScrollMode="never"
5
Woz

essayez l'extrait de code ci-dessous

listView.setVerticalFadingEdgeEnabled(false);
1
Yash

ajoutez ceci en XML:

Android:fadingEdge="none" or Android:fadingEdgeLength="0dp"
0
Dayanand Waghmare