106

Androidでリソースに名前を付ける方法はありますか?たとえば、ボタン、textViews、メニューなどです。

4

15 に答える 15

46

AndroidSDKから始めるのが良いでしょう。

たとえば、アクティビティ内でIDのスコープを設定しようとしています。

もし私がそれを持っていたら、それは単にすべての活動にあるListViewでしょう。 ただし、リストが2つある場合は、より具体的なリストを使用します。@android:id/list
@id/list_apple@id/list_orange

したがって、ジェネリック(ids、...)は再利用されますが、一意の(ids、...)には、アンダースコアで区切られたR.java fileジェネリックのものがプレフィックスとして付けられます。


アンダースコアは、私が観察した1つのことです。たとえば、次のようになります。

レイアウト幅はlayout_widthxmlコードあるため、私はそれに固執しようとしlayoutWidthますlist_apple

したがって、ログインボタンはになりますが、ログインlogin2つある場合は、とにlogin_fooなりlogin_barます。

于 2011-08-29T03:01:32.867 に答える
28

公式の推奨事項があるかどうかはわかりません。

ウィジェットとコンテナーを使用したレイアウトのIDには、次の規則を使用します。

<layout>_<widget/container>_<name>

これらのレイアウトで使用する寸法、文字列、数字、色についても同じ戦略を実行します。しかし、私は一般化しようとします。たとえば、すべてのボタンに共通のtextColorがある場合、名前の前にレイアウトを付けません。リソース名は「button_textColor」になります。すべてのtextColorが同じリソースを使用している場合、そのリソースには「textColor」という名前が付けられます。スタイルの場合、これは通常も当てはまります。

私が使用するメニューリソースの場合:

menu_<activity>_<name>

大文字は使用できないため、アニメーションは異なります。ドローアブルxmlリソースについても同じことが言えると思います。

于 2011-08-30T20:30:01.283 に答える
27

Androidのドキュメントから取得。主題についてはもっとあります。

于 2013-01-02T09:53:29.333 に答える
18

あなたの質問に答えるために:はい、あります。

あなたは例えばグーグル検索を介してそれらの多くを見つけることができます。そして、最高の命名規則のようなものはありません。それは常にあなたのニーズとあなたのプロジェクト属性(最も重要なのはスコープ)に依存します。


最近、JeroenMolsのAndroidXMLでのリソースの命名に関する非常に優れたブログ投稿を読みました。著者は、すべてのリソースが従うべき基本原則と、この規則が各リソースタイプにどのように適用されるかについて言及しています。どちらもAndroidリソースの命名に関するチートシートに記載されています。

Androidリソースの命名に関するチートシート

次に、各要素と各リソースタイプについて詳しく説明します。


中小規模のプロジェクト(個人使用、数か月の契約申請)でこの規則を使用できると思います。ただし、50以上のアクティビティや1000以上の文字列を使用する長時間のプロジェクトにはお勧めしません。

このような大規模なプロジェクトでのリソース値の規則では、それらがどのように使用されるかについてさらに調査する必要があります。文字列を例にとってみましょう。チームのサイズ、使用している翻訳センター(存在する場合)、使用しているVCS(たとえば、マージの競合を回避するため)などの影響を受ける可能性があります。文字列を複数のファイルに分割することも考えられます。

私はあなたが最初に何かを探していると思います。だから私は私が言及したブログ投稿をお勧めします。これは初心者にとっては良いことであり、独自の優れた命名規則を作成するためのインスピレーションとして間違いなく使用できます。

また、プロジェクトが成長するにつれて、多くのニーズと要件が時間とともに変化する可能性があることにも注意してください。したがって、最初は適切だった命名規則が2年後には適切ではなくなるのはまったく正常なことです。そして、それは完全に大丈夫です。あなたは未来を予測しようとすべきではありません。規則を選択してそれに従ってください。それがあなたとあなたのプロジェクトに適しているかどうかがわかります。そうでない場合は、それが適切でない理由を考えて、他のものを使い始めてください。

于 2016-10-05T06:18:38.447 に答える
15

リソースで使用されるいくつかの規則があります。

  • 個別のファイルとして存在するリソースの場合、それらはlower_case_underscore_separatedである必要があります。apptツールでは、大文字と小文字が混在するファイルシステムで問題が発生する可能性があるため、ファイルが小文字のみであることを確認します。
  • 値/...(属性、文字列など)でのみ宣言されたリソースの場合、規則は通常、mixedCaseです。
  • 単純な名前空間を持つために「分類」で名前にタグを付けるために時々使用される規則があります。これは、たとえば、layout_widthやlayout_alignLeftなどが表示される場所です。レイアウトファイルでは、所有者が異なっていても、ビューと親レイアウト管理の両方の属性が混在しています。「layout_*」規則により、これらの名前の間に競合がなく、名前がどのエンティティに影響を与えるかを簡単に理解できます。

この「layout_blah」規則は、他のいくつかの場所でも使用されています。たとえば、ビューが持つことができる描画可能な状態である「state_blah」属性があります。

また、これら2つの規則(ファイルの場合はunderscore_separated、宣言されたリソースの場合はmixedCase)のため、多くの不整合があります。たとえば、色はファイルまたは明示的な値として宣言できます。通常、これらすべてについてunderscore_separatedを使用しますが、常にそうなるとは限りません。

最終的には、リソースの命名規則についてはそれほど心配する必要はありません。一貫性を保つ大きなものは、属性の「mixedCase」と、レイアウトパラメータ属性を識別するための「layout_blah」の使用です。

また、ここで公開リソースを閲覧すると、コンベンションの雰囲気がよくなります。

http://developer.android.com/reference/android/R.html

属性はすべて非常に一貫していることがわかります(layout_規則を理解している場合)、ドローアブルはすべてunderscore_separatedなどです。

于 2011-09-01T16:48:28.037 に答える
12

これはどの言語やフレームワークにも共通の問題ですが、予約語を避けている限り、あなたが物事と呼んでいるものを覚えていると仮定して大丈夫です。

Androidはxmlリソースファイル名に制限を設けていますが、アンダースコアは問題ないようです。ADTは実際に述べています

ファイルベースのリソース名には、小文字のaz、0〜9、または_のみを含める必要があります。

最初に私をつまずかせたのは、IDを持つ名前空間の欠如でしたが、2つのIDがある場合、同じAndroidが定義されたIDを再利用するだけである場合、これは通常無視できます。

idの場合、3文字の修飾子を使用し、その後にキャメル表記で参照するものを使用します。たとえば、静的テキストラベル(またはtextview)の場合はlblFoo、編集可能なテキストボックス(Androidの場合はedittext)の場合はtxtFooです。これは最初は奇妙に思えるかもしれませんが、VB6とそれらのコントロールがラベルとテキストボックスと呼ばれて以来、私はそれを使用しています。

これが私がよく使うものです:

  • btnFoo-ボタン
  • pwdFoo-パスワード
  • lstFoo-リスト
  • clrFoo-色
  • tblFoo-テーブル
  • colFoo-列
  • rowFoo-行
  • imgFoo-画像
  • dimFoo-ディメンション
  • padFoo-パディング
  • mrgFoo-マージン

私はJavaファイル内のコードでも同じものを使用しているので、それについて考える必要はありません。パッケージスコープはこれを非常に喜んで許可します。

Button btnFoo = (Button)findViewById(R.id.btnFoo);

アンダースコア、つまりbtn_fooを使用して少し間隔を追加したい場合は、これを行うことができます。古い習慣を破ることができれば、おそらくこれを行うでしょう。

これらを短縮することは理想的ではなく、純粋主義者はフルネームを使用する必要があると主張する人もいますが、数十のコントロールに名前を付けて異なるシステムやフレームワーク間で変更すると、フルネームは意味を失います、私はこれらは、VB、C ++、ASP.NET、C#およびVB.NETのWinForms、Android、Pythonで10年以上使用されています。Androidがそれをテキストボックスと呼んでいるのかエディットテキストと呼んでいるのかを覚えておく必要はありません。私が知る必要があるのは、lblFooが静的ラベルであり、txtFooがユーザーが入力するものであるということだけです。

最後の注意点は、重要なことを決定する規則に関係なく、コントロールに適切かつ一貫して名前を付けることです。これにより、TextView5やさまざまな規則の組み合わせなどのあいまいなデフォルトIDに取り組む必要がなくなります。

于 2011-09-01T01:25:40.327 に答える
4

デザイナーと開発者のための便利なリンク-ここ

寸法とサイズ、命名規則、スタイルとテーマ、9パッチなど。

于 2014-05-14T08:02:14.310 に答える
3

Googleが推進している標準的な慣習はないと思います。さまざまな公式Googleアプリ内であっても、人々が名前を付けるさまざまな方法を見てきました。

1つのディレクトリ階層で100個のレイアウト(またはドローアブル、メニューなど)ファイルを理解しようとするときに最も役立つものは何でも。

于 2011-08-27T18:31:07.210 に答える
3

簡単な答え:Android開発者から学びたい場合、良い例はサポートライブラリv7(https://dl-ssl.google.com/android/repository/support_r21.zip)です。

それ以外の場合、リソースの命名について私が検討したことは次のとおり
です。1.コードを書くときにリソースを簡単に見つける
2.コードを読むときにリソースを簡単に理解する
3.名前を翻訳者に役立つようにする(R.string.*リソースのみ)
4。レイアウトを再利用する<include/>R.id.*リソースの競合)
5。ライブラリプロジェクトで

論理的には、リソースの配置は、Javaクラスをパッケージにグループ化する(またはファイルをフォルダーに配置する)ことと同じである必要があります。ただし、Androidリソースには名前空間がないため、同じ名前空間を実現するには、リソース名にプレフィックスを追加する必要があります(例:com.example.myapp.photoになりますcom_example_myapp_photo)。

アプリを、リソースプレフィックスとして使用できる短い一意の名前を持つ個別のコンポーネント(アクティビティ、フラグメント、ダイアログなど)に分割することをお勧めします。このようにして、関連する機能を備えたリソースをグループ化して、リソースを見つけやすくし(ポイント1)、同時に<include/>、ライブラリプロジェクトとライブラリプロジェクトの両方との名前の競合を回避します(ポイント4と5)。複数のコンポーネントに共通のリソースには、引き続きプレフィックス(などR.string.myapp_ok_button)を付けることができることに注意してください。

プレフィックスの後に、名前はリソースが何に使用されるか(実行されるアクション、表示されるコンテンツなど)を示す必要があります。良い名前を選ぶことは理解するために重要です(ポイント2と3)。

「component_name」が十分な情報を提供する場合があります。これは、タイプがすでにRクラスによって指定されている場合に特に当てはまります(R.string.myapp_name_string2番目の「文字列」は冗長です)。ただし、タイプを明示的に追加すると、理解を深めることができます(たとえば、翻訳者がトーストとラベルを区別するのに役立つ場合があります)。「名前」と「タイプ」の部分を入れ替えて、タイプベースのフィルタリングを可能にする場合があります(R.string.photo_menu_*写真コンポーネントのメニュー関連のアイテムのみが表示されます)。

写真を撮るためのアクティビティ、クラスcom.example.myapp.photo.PhotoActivityを作成しているとしましょう。リソースは次のようになります(コンポーネント「写真」でグループ化):

R.layout.photo //if only a single layout is used
R.menu.photo  
R.string.photo_capture_instructions_label  
R.id.photo_capture_instructions_label  
R.id.photo_capture_button  
R.id.photo_capture_image  
R.drawable.photo_capture_placeholder  
R.dimen.photo_capture_image_height  
于 2015-03-20T14:22:47.290 に答える
2

Androidのドキュメントをざっと見てみると、「ベストプラクティス」についてさまざまな言及がありますが、具体的なルールは確かにありません。たとえば、アイコンデザインガイドラインでは、Googleは「ic_」プレフィックスを付けてアイコンに名前を付けることを提案しています。

開始するのに適した場所は、リソースの提供です。

また、Googleの開発者がどのように行動するかを知りたい場合は、SDKのソース/例やAndroidDevelopersBlogを調べてください。

于 2011-09-02T03:05:44.600 に答える
1

文字列の次の命名規則が便利であることがわかりました。

[<action>]_<object>_<purpose>

たとえば、clear_playlist_text、delete_song_message、update_playlist_positivebutton_textです。そして、ここでの「アクション」はオプションです。

于 2015-06-17T11:24:32.760 に答える
0

たとえば、IDの前に「x」を追加したことを除いて、私は通常、リソースID(ファイルのファイルではなく)のJava命名規則に従いました。

<TextView android:id="@+id/xTvName" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

Javaではシンプルに使用できます(シンプルに覚えることもできます)

TextView mTvName=(TextView)findViewById(R.id.xTvName);

ここでは、mTvName(一般的にandroidが推奨する命名規則)とandroid TextViewのId(XMLを意味するx)の一部としてレイアウトファイルで名前が付けられたxTvNameを、ButtonsやEditTextなどのビューオブジェクトのこのタイプの命名規則に従いました。

XML IDSの場合:xViewTypeSpecificName

Javaの場合:mViewTypeSpeficName

上記の規則により、複雑なレイアウトを作成するときの作業が楽になります。名前はできるだけ短くしてください。他の共同開発者にとって理解可能で意味のあるものであるとよいでしょう(ただし、毎回可能ではない場合があります)。私の経験が他の人に役立つことを願っています。提案を歓迎します。

于 2011-09-02T14:48:21.187 に答える
0

私たちのAndroidプロジェクトには、ボタン、ラベル、テキストボックスなどのコンポーネントがたくさんあります。たとえば「name」のような単純な名前は、「name」がラベルまたはテキストボックスであることを識別するのに非常に混乱します。主に、他の開発者によって開発されたプロジェクトを保守しているときに発生します。

したがって、この種の混乱を避けるために、ボタンのテキストボックスまたはラベルに次の名前を使用しました

例 :

 btnName
 labName
 txtName
 listName

これはあなたに役立つかもしれません。

于 2014-04-30T14:38:01.250 に答える
-1

ここでアイデアを得るためにコードスタイルのグーグルドキュメントを読むことができます

于 2011-08-23T18:18:06.313 に答える
-2

いくつかの制限があります:

  1. リソース名にはaz、0-9、_が含まれている必要があります
  2. リソース名はaz、_で始まる必要があります

ちなみに、ガイドラインに従うか、標準コードから学ぶことをお勧めします。

于 2011-09-01T07:29:19.883 に答える