【问题标题】:How can I get the default divider?如何获得默认分隔符?
【发布时间】:2014-02-12 10:06:54
【问题描述】:

我想制作一个表单并在每个表单元素之间放置一个分隔线,并且我希望分隔线的样式与平台上 ListView 的默认样式相同。

我能否以某种方式访问​​有关 ListView 的默认分隔符的信息并将其用于我的表单?

【问题讨论】:

    标签: android


    【解决方案1】:

    some Android sources 是这样处理的

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

    【讨论】:

    • 你能修复链接吗?
    • 如果你知道“Holo”风格怎么样?这样做是深灰色而不是蓝色。
    • 但是,据我所知,ICS 上的分隔线是深灰色的。
    【解决方案2】:

    这将获得与您的应用程序主题匹配的默认列表分隔符:

    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();
    

    【讨论】:

    • 谢谢,正是我需要的!
    【解决方案3】:

    我就是这样做的

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

    【讨论】:

      【解决方案4】:

      要从代码中获取默认水平分隔线,您可以使用:

          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);
      

      【讨论】:

        猜你喜欢
        • 2010-11-28
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多