2011-05-08 46 views
0

首先,我想道歉如果我的问题是非常基本的 - 我不知道哪些关键字是有用的找到答案。在XML文件中使用视图组件(Android)

我知道如何编写两个“类型”的应用程序 - 一个是由.xml文件运行的应用程序(例如,从Celsius到华氏转换器,一些选项菜单等),以及与扩展View的类(用于具有图形组件的应用程序)。我的问题是,如何将它们结合起来?更确切地说,如何将一个View组件添加到XML文件中?实际示例:在选项菜单中绘制一个圆圈,该菜单一旦被触摸就会移动。

预先感谢您。

回答

1

我不知道在选项菜单中画圆,但一般情况下,您可以在layout xml中使用您的自定义视图类,

<com.testing.MyCustomView 
    id="@+id/my_view" 
    ... /> 

使他们相比非常相像使用TextViews,ImageViews等

+0

非常感谢,我将尝试这种方法。 – ronash 2011-05-08 21:16:22

+0

让我们知道它是如何去的。 – harism 2011-05-08 21:28:00

+0

嗯,我试图在View的一个简单扩展上,它工作得很好。明天(现在太累了......)我将介绍一些来自传感器的信息 - 但我不认为它会导致任何问题,因为传感器是在主要的Activity类中处理的(或者可能有另一个方式?我可能会对此感兴趣)。再次感谢你,祝你有个愉快的一周! – ronash 2011-05-08 21:36:11

1

在XML中使用自定义视图,您将需要

  • 代码视图以这样一种方式,它接受AttributeSet。例如:

    公共ActivityTitleView(上下文范围内,的AttributeSet ATTRS)

  • 定义设置样式属性。他们进入RES /价值/ attr.xml

<resources> 
    <declare-styleable name="ActivityTitleView"> 
     <attr name="text" format="string"/> 
     <attr name="helpContext" format="string"/> 
    </declare-styleable> 
</resources 
  • 包括您在XML用自己的命名空间视图。

<的LinearLayout 的xmlns:如果你想让你的属性自己的命名空间是很重要的android = “http://schemas.android.com/apk/res/android” 的xmlns:yournamespace =“HTTP: //schemas.android.com/apk/res/com.yourpackage” >

<com.yourpackage.ActivityTitleView yournamespace:text="Bla Bla" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 
  • 提取物in代码属性
 
    TypedArray array = context.obtainStyledAttributes(attrs, 
      R.styleable.ActivityTitleView, 0, 0); 
    String text = array.getString(R.styleable.ActivityTitleView_text); 
    helpContext = array.getString(R.styleable.ActivityTitleView_helpContext); 

对不起,StackOverflow似乎没有格式化我的代码片段。随意编辑格式。

+0

非常感谢您的回答。不幸的是,我认为我对Android编程知之甚少,无法理解你所说的一切,所以现在我会采取其他建议的方法,但是当我有时间和精力时 - 我一定会考虑它。谢谢! – ronash 2011-05-08 21:17:59

+0

其实它是一样的方法。我可以看到它是如何神秘的 - 几周前我一直在穿鞋子。如果你意识到你也想定制你的视图(即在xml中指定圆的半径),那么你可能想要回来并重读。问候。 – 2011-05-08 21:59:17