2013-03-11 2 views
6

Я пытаюсь сделать элементы списка прямоугольной формы с закругленными углами, но что происходит со мной, только первая строка имеет закругленные углы на верхней части, остальные элементы списка элементов списка фигурируют в прямоугольных формах без округлых углы. Я не знаю, почему это происходит.Элементы списка с закругленными углами

Вот мои ListView коды:

<ListView 
    android:id="@+id/listViewdoctorwithappointment" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="7dp" 
    android:layout_marginRight="7dp" 
    android:layout_marginTop="10dp" 
    android:minHeight="80dp" 
    android:background="@drawable/customshapeduplicate" 
    android:cacheColorHint="@android:color/transparent" 
    android:divider="#4F94CD" 
    android:dividerHeight="10dp" 

    android:smoothScrollbar="true" 

    android:listSelector="@drawable/selector" 
    android:scrollbars="none" > 
</ListView> 

И вот мой customshapeduplicatefile это:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient android:startColor="#ffffff" android:endColor="#ffffff" 
     android:angle="270"/> 

    <corners android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" 
     android:topLeftRadius="10dp" android:topRightRadius="10dp"/> 
</shape> 

И это изображение:

enter image description here

+0

набор круглых форма для макета для элемента списка – DjHacktorReborn

ответ

2

установить фон не для listview но custom layout, что вы используете для отображения ListView Row

android:background="@drawable/customshapeduplicate" 
+0

Извините за поздний ответ, спасибо @BaZinga, вы делаете правильные вещи, что я делаю неправильно, я устанавливал фон в listview вместо customview.xm l – abh22ishek

+0

Мой ответ полезен для вас, это то, что важно :) – KDeogharkar

+0

может помочь мне в этом, http: //stackoverflow.com/questions/20755671/implementation-of-dexguard. – abh22ishek

0

Это потому, что атрибут background - это фон ire, а не отдельные строки.

Для достижения того, что вы хотите, установите либо настраиваемый фон через свой Adapter или макет списка или посмотрите на this ответ.

4

Я предлагаю вам использовать адаптер пользовательский список. Измените приведенный ниже код в соответствии с вашими требованиями.

public View getView(final int arg0, View arg1, ViewGroup arg2) { 
    final ViewHolder vh; 
    vh= new ViewHolder(); 

    if(arg1==null) 
    { 
        arg1=mInflater.inflate(R.layout.lyourcustomlayouttobe inflated, arg2,false); 
      arg1.setTag(vh); 
      } 

    return arg1; 
} 

Ваш пользовательский макет

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" 
android:cacheColorHint="#000000" 
android:background="@drawable/listviewbkg"> 
//other items to be inlfated. 
</LinearLayout> 

Создать Drawable папку в ресурсах. разместить ниже XML, как listviewbkg

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
    android:drawable="@drawable/pressed" /> 
<item android:state_focused="false" 
    android:drawable="@drawable/normal" /> 
</selector> 

Форма, когда нормальная под Drawable с именем normal.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#FFFFFF"/>  
<stroke android:width="3dp" 
     android:color="#0FECFF" /><!-- #330000FF #ffffffff --> 
<gradient        // remove the gradient if do not wish to use. 
    android:startColor="#ffffffff" 
    android:endColor="#110000FF" 
    android:angle="90"/> 

<padding android:left="5dp" 
     android:top="5dp" 
     android:right="5dp" 
     android:bottom="5dp"/> 
<corners android:bottomRightRadius="7dp"  // change this to increase the rounded edge radius 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 
</shape> 

формы при прессовании под названием pressed.xml в вытяжке папке

<?xml version="1.0" encoding="UTF-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#FF1A47"/>  
    <stroke android:width="3dp" 
     android:color="#0FECFF"/> 
    <padding android:left="5dp" 
     android:top="5dp" 
     android:right="5dp" 
     android:bottom="5dp"/> 
    <corners android:bottomRightRadius="7dp" 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 
    </shape> 
+0

Есть ли способ, которым я не должен использовать пользовательский адаптер? – abh22ishek

+0

Я предлагаю вам использовать пользовательский адаптер, поскольку настройка становится легкой. – Raghunandan

+0

Причина, когда я использую, чтобы поместить только небольшие данные в два текстовых поля внутри каждой строки списка, я получаю прямоугольные строки списка, закругленные с помощью угла ecah. – abh22ishek

Смежные вопросы