Ответ 1
Вот как это делается в некоторых источниках Android
<View
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/listDivider" />
Я хочу создать форму и поместить разделитель между каждым элементом формы, и я хочу, чтобы разделитель имел тот же стиль, что и для списка ListView на платформе.
Можно ли каким-либо образом получить доступ к информации о разделителе по умолчанию для ListView и использовать его для моей формы?
Вот как это делается в некоторых источниках Android
<View
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/listDivider" />
Это получит разделитель списка по умолчанию, соответствующий вашей теме приложений:
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();
Вот как я это делаю
<ImageView
android:layout_width="fill_parent"
android:layout_height="1dp"
android:scaleType="fitXY"
android:src="?android:attr/listDivider" />
Чтобы получить горизонтальный разделитель по умолчанию из кода, вы можете использовать:
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);