2012-03-20 18 views
1

レイアウトの一番上にあるAppBarラベル/タイトル領域にUserNameを含めたいと思います。私の理解では、res \ values \ strings.xmlは、AppNameのような定数を入れるのに最適です。だから私は持っている文字列操作のアドバイス

<resources> 
<string name="app_name">MyFirstApp</string>... 

私はラベルフィールドの@文字列/ app_nameを持っています。

ラベルにユーザー名を追加するにはどうしたらいいですか?

str_UserNameという名前の2番目の文字列res定数を作成することを考えました。値は認証まで空白になり、その後、ログインが成功した後にプログラムでstr_UserNameを更新します。私がそこにいる問題は、マニフェストで連結しています。私が思いつく組み合わせは好きではない。 (たとえば、@ string/app_name + @ string/str_UserNameまたは@ string/app_name + str_UserNameなど)

次に、私は文字列配列を読み上げます。しかし、文字列配列を使う私の試みでは、マニフェストのためにはうまく動作しません。私はあなたが配列を参照せず、インデクサーを表示する要素がないので、私は仮定していますか?

最後に、私はApp Nameを左揃えにし、一定の値を使い、ユーザー名を右揃えにして、もちろんユーザー名に基づいてユーザー名を設定することをお勧めします。

TIA JB

+1

あなたはのAndroidManifest.xmlの内容や他のXMLファイルを変更することはできません実行時にアプリケーションのタイトルバーのテキストを変更することはできますが、この回答に記載されているようにタイトルバーのテキストを変更することができます:http://stackoverflow.com/questions/3438276/change-title-bar-text-in-android – Egor

答えて

1

あなたはres/values/の値/文字列を変更することはできません、あなたはどちらかそれらを連結することはできません。

しかし、必須ではありません。ユーザー名を取得した後:

setTitle(getString(R.string.app_name) + " " + username); 

タイトルが変更されます。

+0

私は両方の方法しかし、最終的には私が試しているすべてのものと同じようにこの時点で行うべきことは、Android開発で足が濡れていることです。私はあなたがstrings.xmlに保存されているユーザー名のようなものを望んでいないという長期的なことを知っています。 setTitle(getString(R.string.app_name)+ ":::" + getString(R.string.str_UserName)); – GPGVM

2

getStringメソッドはパラメータを取り、String.formatメソッドと同様に動作します。これは頻繁に使用されるものではありませんが、文書化されて正常に動作します。ユーザー名を持っていたら、

<string name="my_custom_title">MyFirstApp for user %s</string> 

をそして:だから、あなたはそのような何かを行うことができます

setTitle(getString(R.string.my_custom_title, username)); 

出典:The Context API

+1

あなたの ')'があなたを裏切り、間違った場所に移動しました: 'setTitle(getString(R.string.my_custom_title、username));' – zapl

+0

よく知っておいてください。 {1,8:yyyy} == 1990のようなstring.formatもサポートしていますか?私は次に参照を読むので、答えがあれば心配しないでください。 – GPGVM

+0

@zapl、本当にありがとう!今すぐ修正。これらの罪深い)は自分の人生を持っている、私は誓う! – Guillaume