2011-01-01 5 views
25

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

Можно ли каким-либо образом получить доступ к информации о делителе по умолчанию для ListView и использовать его для моей формы?

ответ

63

Это, как это делается в some Android sources

<View 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?android:attr/listDivider" /> 
+0

Вы можете исправить ссылку, пожалуйста? – Maxim

+0

Как насчет стиля «Holo», если вы знаете? При этом темно-серый, а не синий. – Maxim

+1

Но, насколько я вижу, разделители на ICS темно-серые. – Michael

6

Это, как я это делаю

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="1dp" 
    android:scaleType="fitXY" 
    android:src="?android:attr/listDivider" /> 
2

Чтобы получить по умолчанию горизонтальный разделитель из кода можно использовать:

final TypedArray array = getContext().getTheme().obtainStyledAttributes(
      R.style.<some_theme>, new int[] { 
       android.R.attr.dividerHorizontal 
      }); 
    final int defaultDivider = array.getResourceId(0, 0); 
    final Bitmap dividerBitmap = BitmapFactory.decodeResource(r, defaultDivider); 
    final BitmapDrawable divider = new BitmapDrawable(r, dividerBitmap); 

Тогда , а также нарисуйте его самостоятельно на Canvas в onDraw:

divider.setBounds(X, Y, X + width, Y + height); 
divider.draw(canvas); 
10

Это позволит получить список разделитель по умолчанию, который соответствует вашим приложениям тему:

int[] attrs = { android.R.attr.listDivider }; 
TypedArray ta = getApplicationContext().obtainStyledAttributes(attrs); 
//Get Drawable and use as needed 
Drawable divider = ta.getDrawable(0); 
//Clean Up 
ta.recycle(); 
+0

Спасибо, только то, что мне нужно! – nekavally

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