【发布时间】:2014-02-12 10:06:54
【问题描述】:
我想制作一个表单并在每个表单元素之间放置一个分隔线,并且我希望分隔线的样式与平台上 ListView 的默认样式相同。
我能否以某种方式访问有关 ListView 的默认分隔符的信息并将其用于我的表单?
【问题讨论】:
标签: android
我想制作一个表单并在每个表单元素之间放置一个分隔线,并且我希望分隔线的样式与平台上 ListView 的默认样式相同。
我能否以某种方式访问有关 ListView 的默认分隔符的信息并将其用于我的表单?
【问题讨论】:
标签: android
some Android sources 是这样处理的
<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);
【讨论】: