<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>digital matter &#187; tips</title>
	<atom:link href="http://blog.loadlimits.info/tag/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.loadlimits.info</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 29 Jan 2012 07:43:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>OptionsMenuの文字色を変更する</title>
		<link>http://blog.loadlimits.info/2011/10/optionsmenu%e3%81%ae%e6%96%87%e5%ad%97%e8%89%b2%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/</link>
		<comments>http://blog.loadlimits.info/2011/10/optionsmenu%e3%81%ae%e6%96%87%e5%ad%97%e8%89%b2%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 05:06:50 +0000</pubDate>
		<dc:creator>hotpi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[解決]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.loadlimits.info/2011/10/optionsmenu%e3%81%ae%e6%96%87%e5%ad%97%e8%89%b2%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/</guid>
		<description><![CDATA[Activityで端末のメニューボタンを押したときに出てくるオプションメニューですが、文字の色が変えられなくて困っていました。 Themeのandroid:panelTextAppearanceで変えられるのかと思っていたのだけど、なぜかうまく行かず。 背景画像はテーマで変更できるのですが。 リフレクションを使ってテキストカラーの変更をしてみました。Android API 8で確認しています。 デフォルト 文字色変更 Activityのコード public class CustomizedMenuActivity extends Activity { public static final int MENU_ID_COFFEE = 1; public static final int MENU_ID_LOVE = 2; public static final int MENU_ID_RECYCLE = 3; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.customized_menu); } private TextView getMenuItemView(MenuItem item) { try { Class&#60;?&#62; c = [...]]]></description>
			<content:encoded><![CDATA[<p>Activityで端末のメニューボタンを押したときに出てくるオプションメニューですが、文字の色が変えられなくて困っていました。</p>
<p>Themeのandroid:panelTextAppearanceで変えられるのかと思っていたのだけど、なぜかうまく行かず。</p>
<p>背景画像はテーマで変更できるのですが。</p>
<p>リフレクションを使ってテキストカラーの変更をしてみました。Android API 8で確認しています。</p>
<p>デフォルト</p>
<p><a href="http://blog.loadlimits.info/wp-content/uploads/2011/10/device-2011-10-22-120919.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="device-2011-10-22-120919" src="http://blog.loadlimits.info/wp-content/uploads/2011/10/device-2011-10-22-120919_thumb.png" width="640" height="384" /></a></p>
<p>文字色変更</p>
<p><a href="http://blog.loadlimits.info/wp-content/uploads/2011/10/device-2011-10-22-135742.png"><img style="border-right-width: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px;padding-top: 0px" border="0" alt="device-2011-10-22-135742" src="http://blog.loadlimits.info/wp-content/uploads/2011/10/device-2011-10-22-135742_thumb.png" width="640" height="384" /></a></p>
<p>Activityのコード</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre>public class CustomizedMenuActivity extends Activity {
	public static final int MENU_ID_COFFEE = 1;
	public static final int MENU_ID_LOVE = 2;
	public static final int MENU_ID_RECYCLE = 3;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.customized_menu);
	}

	private TextView getMenuItemView(MenuItem item) {
		try {
			Class&lt;?&gt; c = item.getClass(); // itemはMenuItemImplのインスタンス
			Class&lt;?&gt;[] paramTypesGetItemView = { int.class, ViewGroup.class };
			Method method = c.getDeclaredMethod("getItemView", paramTypesGetItemView);

			// getItemViewはprivateメソッドなのでアクセス可能に変更する
			method.setAccessible(true);

			// IconMenuItemViewを取得できる
			TextView view = (TextView) method.invoke(item, new Object[] { 0, null });

			return view;
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// メニューアイテムの追加
		MenuItem menuItemCoffee = menu.add(Menu.NONE, MENU_ID_COFFEE,
				Menu.NONE, this.getText(R.string.menu_coffee)).setIcon(
				R.drawable.icon_coffee);
		MenuItem menuItemLove = menu.add(Menu.NONE, MENU_ID_LOVE, Menu.NONE,
				this.getText(R.string.menu_love)).setIcon(R.drawable.icon_love);
		MenuItem menuItemRecycle = menu.add(Menu.NONE, MENU_ID_RECYCLE,
				Menu.NONE, this.getText(R.string.menu_recycle)).setIcon(
				R.drawable.icon_recycle);

		try {
			TextView viewCoffee = getMenuItemView(menuItemCoffee);
			TextView viewLove = getMenuItemView(menuItemLove);
			TextView viewRecycle = getMenuItemView(menuItemRecycle);

			// テキストの色を変える
			viewCoffee.setTextColor(0xFFB5985A);
			viewCoffee.setTextSize(14);
			viewCoffee.setTextScaleX(0.8f);

			viewLove.setTextColor(0xFFCF7D5B);
			viewLove.setTextSize(22);
			viewLove.setTypeface(Typeface.DEFAULT_BOLD);

			viewRecycle.setTextColor(0xFF8A6381);
			viewRecycle.setTextSize(16);
			viewRecycle.setTypeface(Typeface.create(Typeface.SERIF,
					Typeface.BOLD_ITALIC));

		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		}

		return super.onCreateOptionsMenu(menu);
	}
}
</pre>
</div>
<p>MenuItemの実体はMenuItemImplクラスで、getItemViewメソッドを使ってIconMenuItemViewクラスを取り出しています。</p>
<p>IconMenuItemViewクラスはTextViewを継承しているので、キャストすればテキストカラーやフォントサイズなどの変更ができます。</p>
<p>ちなみに、このあと、メニューのセパレータ（divider）画像の変更とアイコンと文字の配置の変更もやりました。それは次以降のエントリで。</p>
<p><a href="http://blog.loadlimits.info/2011/10/%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%AE%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%A8%E6%96%87%E5%AD%97%E3%82%92%E6%A8%AA%E4%B8%A6%E3%81%B3%E3%81%AB/">オプションメニューのアイコンと文字を横並びにしたかった : blog.loadlimit &#8211; digital matter -</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadlimits.info/2011/10/optionsmenu%e3%81%ae%e6%96%87%e5%ad%97%e8%89%b2%e3%82%92%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>複数の入力欄にまたがるValidationのエラーを特定の入力欄に表示させたい場合</title>
		<link>http://blog.loadlimits.info/2010/03/%e8%a4%87%e6%95%b0%e3%81%ae%e5%85%a5%e5%8a%9b%e6%ac%84%e3%81%ab%e3%81%be%e3%81%9f%e3%81%8c%e3%82%8bvalidation%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e7%89%b9%e5%ae%9a%e3%81%ae%e5%85%a5%e5%8a%9b/</link>
		<comments>http://blog.loadlimits.info/2010/03/%e8%a4%87%e6%95%b0%e3%81%ae%e5%85%a5%e5%8a%9b%e6%ac%84%e3%81%ab%e3%81%be%e3%81%9f%e3%81%8c%e3%82%8bvalidation%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e7%89%b9%e5%ae%9a%e3%81%ae%e5%85%a5%e5%8a%9b/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 17:10:02 +0000</pubDate>
		<dc:creator>hotpi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[解決]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.loadlimits.info/2010/03/%e8%a4%87%e6%95%b0%e3%81%ae%e5%85%a5%e5%8a%9b%e6%ac%84%e3%81%ab%e3%81%be%e3%81%9f%e3%81%8c%e3%82%8bvalidation%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e7%89%b9%e5%ae%9a%e3%81%ae%e5%85%a5%e5%8a%9b/</guid>
		<description><![CDATA[sfFormでSymfony 1.4のお話。 PostValidatorのエラーメッセージをどこに出せばいいんだ？という状況で使用できます。 class SomethingInputForm extends BaseForm { public function configure() { // ... $this-&#62;validatorSchema-&#62;setPostValidator( new sfValidatorCallback(array('callback' =&#62; array($this, 'myCallbackFunc'))) ); } public function myCallbackFunc($validator, $values) { // 何かバリデーション if (!($values['input1'] == $values['input2'] == $values['input3'])) { $error = new sfValidatorError($validator, 'error message ...'); throw new sfValidatorErrorSchema($validator, array('input1' =&#62; $error)); } return $values; } } こんな感じで、input1のエラーとして出力できるので、テンプレートのエラー表示が楽になります。]]></description>
			<content:encoded><![CDATA[<p>sfFormでSymfony 1.4のお話。</p>
<p>PostValidatorのエラーメッセージをどこに出せばいいんだ？という状況で使用できます。</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre>class SomethingInputForm extends BaseForm
{
    public function configure()
    {
        // ...
        $this-&gt;validatorSchema-&gt;setPostValidator(
            new sfValidatorCallback(array('callback' =&gt; array($this, 'myCallbackFunc')))
        );
    }

    public function myCallbackFunc($validator, $values) {
        // 何かバリデーション
        if (!($values['input1'] == $values['input2'] == $values['input3'])) {
            $error = new sfValidatorError($validator, 'error message ...');
            throw new sfValidatorErrorSchema($validator, array('input1' =&gt; $error));
        }

        return $values;
    }
}
</pre>
</div>
<p>こんな感じで、input1のエラーとして出力できるので、テンプレートのエラー表示が楽になります。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadlimits.info/2010/03/%e8%a4%87%e6%95%b0%e3%81%ae%e5%85%a5%e5%8a%9b%e6%ac%84%e3%81%ab%e3%81%be%e3%81%9f%e3%81%8c%e3%82%8bvalidation%e3%81%ae%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e7%89%b9%e5%ae%9a%e3%81%ae%e5%85%a5%e5%8a%9b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneな人への地図URLの送り方</title>
		<link>http://blog.loadlimits.info/2010/02/iphone%e3%81%aa%e4%ba%ba%e3%81%b8%e3%81%ae%e5%9c%b0%e5%9b%b3url%e3%81%ae%e9%80%81%e3%82%8a%e6%96%b9/</link>
		<comments>http://blog.loadlimits.info/2010/02/iphone%e3%81%aa%e4%ba%ba%e3%81%b8%e3%81%ae%e5%9c%b0%e5%9b%b3url%e3%81%ae%e9%80%81%e3%82%8a%e6%96%b9/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 09:25:56 +0000</pubDate>
		<dc:creator>hotpi</dc:creator>
				<category><![CDATA[解決]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.loadlimits.info/2010/02/iphone%e3%81%aa%e4%ba%ba%e3%81%b8%e3%81%ae%e5%9c%b0%e5%9b%b3url%e3%81%ae%e9%80%81%e3%82%8a%e6%96%b9/</guid>
		<description><![CDATA[iPhone/iPod touchでもPCでも共通で見られるGoogleマップのURLを作りたくなったのでメモ。 というか、iPhone上のSafariから、Googleで場所を検索すると出てくるリンクですね。iPhoneの場合、このURLを開くと地図アプリが開きます。 http://maps.google.co.jp/?q=東京都新宿区西新宿２丁目８−１ http://maps.google.co.jp/?q=248-0006 PCのGoogleマップで地図のURL開くとめちゃくちゃ長くなってしまうので、こういう指定の仕方覚えておくと便利かも。 何がやりたかったかって言うと、twitterで○○の場所どこ？って聞かれて、とっさに住所だけ答えてしまったけど、iPhoneで使える地図のURLにしたほうが便利だったな、って思って。]]></description>
			<content:encoded><![CDATA[<p>iPhone/iPod touchでもPCでも共通で見られるGoogleマップのURLを作りたくなったのでメモ。</p>
<p>というか、iPhone上のSafariから、Googleで場所を検索すると出てくるリンクですね。iPhoneの場合、このURLを開くと地図アプリが開きます。</p>
<p><a href="http://maps.google.co.jp/?q=%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%96%B0%E5%AE%BF%E5%8C%BA%E8%A5%BF%E6%96%B0%E5%AE%BF%EF%BC%92%E4%B8%81%E7%9B%AE%EF%BC%98%E2%88%92%EF%BC%91">http://maps.google.co.jp/?q=東京都新宿区西新宿２丁目８−１</a></p>
<p><a href="http://maps.google.co.jp/?q=248-0006">http://maps.google.co.jp/?q=248-0006</a></p>
<p>PCのGoogleマップで地図のURL開くとめちゃくちゃ長くなってしまうので、こういう指定の仕方覚えておくと便利かも。</p>
<p>何がやりたかったかって言うと、twitterで○○の場所どこ？って聞かれて、とっさに住所だけ答えてしまったけど、iPhoneで使える地図のURLにしたほうが便利だったな、って思って。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.loadlimits.info/2010/02/iphone%e3%81%aa%e4%ba%ba%e3%81%b8%e3%81%ae%e5%9c%b0%e5%9b%b3url%e3%81%ae%e9%80%81%e3%82%8a%e6%96%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

