2011-05-08 12 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

相關問題