SQLの窓

2016年12月12日

Android Studio で、Failed to find target with hash string というエラーが出たら、Module の build.gradle を変更します

要するに作成した時は、実機の都合等で 6.0 をインストール済みの環境であったりして、そのプロジェクトを普段使っている実機では 4.4.4 とかの環境で実行しようとすると、当然プロジェクトに矛盾が生じるわけですが、たいていはバージョン関連の数値を自分が普段使っている数値に書き換えれば動作すると思います。

エラーが出た build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        applicationId "jp.iseifu.kaisya"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.google.firebase:firebase-core:9.6.1'
    compile 'com.google.firebase:firebase-database:9.6.1'
    testCompile 'junit:junit:4.12'
    compile files('libs/tools.jar')
}

apply plugin: 'com.google.gms.google-services'


自分の環境の build.gradle
apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "jp.iseifu.kaisya"
        minSdkVersion 19
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:22.2.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.firebase:firebase-core:9.6.1'
    compile 'com.google.firebase:firebase-database:9.6.1'
    compile files('libs/tools.jar')
}

apply plugin: 'com.google.gms.google-services'

違いはバージョン関係の行が4行あり、インストールされている com.android.support:appcompat のバージョンでした。


posted by at 2016-12-12 15:11 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2016年07月25日

Android Studio で Fragment の tools:layout で画面を指定して MainActivity には処理を書かないアプリケーション

以下がボタンの画面定義ですが、<Fragment> で使用されます。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ボタン1"
        android:id="@+id/button"
        android:layout_weight="1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ボタン2"
        android:id="@+id/button2"
        android:layout_weight="1"/>

</LinearLayout>
この定義は、二つのフラグメントで使用されます。
public class Buttons extends Fragment {

	@Nullable
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

		View view = inflater.inflate(R.layout.buttons, container, false);

		// **************************
		// 上段左ボタンの処理
		// **************************
		view.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				EditText et = (EditText) getActivity().findViewById(R.id.editText);
				et.setText("最初のフラグメントから、一つ目のボタンを使う");
			}
		});

		// **************************
		// 上段右ボタンの処理
		// **************************
		view.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				// **************************
				// 別のフラグメントへのアクセス
				// **************************
				// フラグメントマネージャを取得して
				FragmentManager fm = getFragmentManager();
				// 目的のフラグメントを取得
				Fragment target = fm.findFragmentById(R.id.fragment2);
				if ( target != null ) {
					// その View を取得して
					View view = target.getView();
					// 中のコンテンツを取得する
					Button button = (Button) view.findViewById(R.id.button);
					// 下段の左ボタンのテキストを赤に
					button.setTextColor(Color.parseColor("#FF0000"));
				}

			}
		});

		return view;

	}

}


二つ目です
public class Buttons2 extends Fragment {

	@Nullable
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

		View view = inflater.inflate(R.layout.buttons, container, false);

		// **************************
		// 下段左ボタンの処理
		// **************************
		view.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				EditText et = (EditText) getActivity().findViewById(R.id.editText2);
				et.setText("二つ目のフラグメントから、一つ目のボタンを使う");
			}
		});

		// **************************
		// 下段右ボタンの処理
		// **************************
		view.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				// **************************
				// 別のフラグメントへのアクセス
				// **************************
				// フラグメントマネージャを取得して
				FragmentManager fm = getFragmentManager();
				// 目的のフラグメントを取得
				Fragment target = fm.findFragmentById(R.id.fragment);
				if ( target != null ) {
					// その View を取得して
					View view = target.getView();
					// 中のコンテンツを取得する
					Button button = (Button) view.findViewById(R.id.button);
					// 上段の左ボタンのテキストを赤に
					button.setTextColor(Color.parseColor("#FF0000"));
				}

			}
		});

		return view;

	}
}


以下は、MainActivity で使用される画面です
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="lightbox.june.fragmenttest.MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/scrollView">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <fragment
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:name="lightbox.june.fragmenttest.Buttons"
                android:id="@+id/fragment"
                tools:layout="@layout/buttons"/>

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/editText"/>

            <fragment
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:name="lightbox.june.fragmenttest.Buttons2"
                android:id="@+id/fragment2"
                tools:layout="@layout/buttons"/>

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/editText2"/>

        </LinearLayout>
    </ScrollView>

</RelativeLayout>

ボタンの各処理は、フラグメントで処理され、activity_main のコンテンツは getActivity().findViewById で取得します。フラグメントから、他のフラグメントのアクセスは、

1) getFragmentManager()
2) findFragmentById()
3) getView()
4) findViewById()

と、順に取得します



posted by at 2016-07-25 20:28 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2016年07月14日

Android の SeekBar を縦方向で使用する設定



XML の画面定義部分の変更だけで対応できました。(setOnSeekBarChangeListener でイベント実装してテスト)
デザイン画面では縦にならず、そもそも、Android Studio のプロパティ一覧に無い android:rotation が必要です。

また、位置調整は、回転した後の位置関係で行います。layout_marginLeft がマイナスなのは、何もしないと右にかなり移動した位置になるからです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.lightbox.seekbartest.MainActivity">

    <SeekBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/seekBar"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:rotation="270"
        android:minWidth="100dp"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="-50dp" />
</RelativeLayout>



posted by at 2016-07-14 11:23 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2016年06月27日

Android 5.1(API 22) と Android 4.4(API 19) でのそれぞれの DatePicker ダイアログの扱い

Android 5.1(API 22) で DatePicker ダイアログを使用するには、テーマにスタイルを設定する必要があります。何もしないで呼び出すと、大きなカレンダーが表示されて変更できません。DatePickerDialog のコンストラクタで定義したスタイル指定する方法もありますが、テーマに全て設定するほうが簡単です。
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!-- コントロール用 -->
        <item name="android:datePickerStyle">@style/MyDatePicker</item>
        <!-- ダイアログ用 -->
        <item name="android:dialogTheme">@style/MyDialogTheme</item>
    </style>

    <!-- コントロール用 -->
    <style name="MyDatePicker" parent="android:Widget.Material.DatePicker">
        <item name="android:datePickerMode">spinner</item>
    </style>
    <!-- ダイアログ用 -->
    <style name="MyDialogTheme" parent="android:Theme.Material.Light.Dialog">
        <item name="android:datePickerStyle">@style/MyDatePicker</item>
    </style>

</resources>


しかし、この追加されたスタイルは、コントロールもダイアログも Android 4.4(API 19) では使用できないので Android 4.4(API 19) でテストする時はコメントにする必要があります。

実行処理
package lightbox.june.datepickercontrol;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.DatePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

	private Calendar calendar;
	private int year;
	private int monthOfYear;
	private int dayOfMonth;
	private DatePicker dp;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		dp = (DatePicker) MainActivity.this.findViewById(R.id.datePicker);

		// ********************************
		// 今日の日付
		// ********************************
		calendar = Calendar.getInstance();
		year = calendar.get(Calendar.YEAR);
		monthOfYear = calendar.get(Calendar.MONTH);
		dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);

		// ******************************
		// ボタン1
		// Spinner
		// ******************************
		MainActivity.this.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				// ********************************
				// Spinner DatePicker ダイアログの処理
				// ********************************
				DatePickerDialog spinnerDatePicker;
				spinnerDatePicker = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
					@Override
					public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
						Log.i("lightbox", String.format("%d-%d-%d",year,(monthOfYear+1),dayOfMonth ) );
					}
				}, year, monthOfYear, dayOfMonth);
				// 表示前に日付を設定する時の日付の変更方法
				spinnerDatePicker.getDatePicker().updateDate(year, monthOfYear, dayOfMonth);
				spinnerDatePicker.show();

				// ********************************
				// Spinner DatePicker コントロールの処理
				// ********************************
				dp.setSpinnersShown(true);
				dp.setCalendarViewShown(false);
				Log.i("lightbox", String.format("%d/%d/%d", dp.getYear(),(dp.getMonth()+1),dp.getDayOfMonth() ) );

			}
		});

		// ******************************
		// ボタン2
		// CalendarView
		// ******************************
		MainActivity.this.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				// ********************************
				// CalendarView DatePicker ダイアログの処理
				// ********************************
				DatePickerDialog CalendarView;
				CalendarView = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
					@Override
					public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
						Log.i("lightbox", String.format("%d-%d-%d",year,(monthOfYear+1),dayOfMonth ) );
					}
				}, year, monthOfYear, dayOfMonth);		// 表示前に日付を設定
				// 表示前に日付を設定する時の日付の変更方法
				CalendarView.getDatePicker().updateDate(year, monthOfYear, dayOfMonth);
				// 表示方法の変更
				CalendarView.getDatePicker().setSpinnersShown(false);
				CalendarView.getDatePicker().setCalendarViewShown(true);
				CalendarView.show();

				// ********************************
				// CalendarView DatePicker コントロールの処理
				// ********************************
				dp.setSpinnersShown(false);
				dp.setCalendarViewShown(true);

				Log.i("lightbox", String.format("%d/%d/%d", dp.getYear(),(dp.getMonth()+1),dp.getDayOfMonth() ) );
			}
		});

		// ******************************
		// ボタン3
		// Spinner DialogFragment
		// Spinner + CalendarView
		// ******************************
		MainActivity.this.findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				// ********************************
				// ダイアログ・フラグメント
				// ********************************
				DialogFragment newFragment = new DatePickerFragment();
				newFragment.show(getSupportFragmentManager(), "datePicker");

				// ********************************
				// Spinner + CalendarView
				// DatePicker コントロールの処理
				// ********************************
				DatePicker dp = (DatePicker) MainActivity.this.findViewById(R.id.datePicker);
				dp.setSpinnersShown(true);
				dp.setCalendarViewShown(true);
				Log.i("lightbox", String.format("%d/%d/%d", dp.getYear(),(dp.getMonth()+1),dp.getDayOfMonth() ) );
			}
		});

	}

	// ******************************
	// DialogFragment
	// ******************************
	public static class DatePickerFragment extends DialogFragment
		implements DatePickerDialog.OnDateSetListener {

		@Override
		public Dialog onCreateDialog(Bundle savedInstanceState) {

			// 初期値を DatePicker コントロールより取得
			DatePicker dp = (DatePicker) DatePickerFragment.this.getActivity().findViewById(R.id.datePicker);
			int year = dp.getYear();
			int month = dp.getMonth();
			int day = dp.getDayOfMonth();

			return new DatePickerDialog(getActivity(), this, year, month, day);
		}

		public void onDateSet(DatePicker view, int year, int month, int day) {
			Log.i("lightbox", String.format("%d-%d-%d",year,(month+1),day ) );
		}
	}
}


3つ目のボタンでは、DialogFragment を使用しており、初期値として DatePicker コントロールの値を使用しています。

Android Deveroper : DialogFragment for a date picker


※ 全てのソースコード



posted by at 2016-06-27 13:07 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

Android 5.1(API 22) と Android 4.4(API 19) でのそれぞれの DatePicker コントロールの扱い

手持ちの Android が 5.1 なら何も考えなくて良いのですが、実機テストをする為に Android 4.4 を Min SDK に設定しています。



この状態で、DatePicker コントロールを貼り付けると以下のようになります。



そして、プレビューを API 19 に変更すると以下のようになります。



実際、実機で実行するとその通りに Spinner 状態で表示され、setSpinnersShown と setCalendarViewShown で変更すると、表示も変わってくれます。

    

しかし、Android5.1(API 22)では、setSpinnersShown と setCalendarViewShown は動作してくれません。初期表示はカレンダー状態になります。( 月の変更の方法が良くわかりません )



そして、setSpinnersShown と setCalendarViewShown を動作させるには、スタイルを定義して DatePicker コントロール に設定してやる必要があります。ただ、これをする場合 Android 4.4(API 19) では、動作しないので Min SDK を変更する必要が出てきてしまいます。( 当然ですが、デバイス選択で実機が Gray out するので実機には転送できなくなります )


<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

    </style>

    <style name="MyDatePicker" parent="android:Widget.Material.DatePicker">
        <item name="android:datePickerMode">spinner</item>
    </style>

</resources>






メインテーマに以下のように設定しておけば、DatePicker コントロールにスタイルを設定する必要はありません
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:datePickerStyle">@style/MyDatePicker</item>
    </style>

    <style name="MyDatePicker" parent="android:Widget.Material.DatePicker">
        <item name="android:datePickerMode">spinner</item>
    </style>

</resources>




タグ:android
posted by at 2016-06-27 10:31 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2016年01月29日

Android Studio でプロジェクトを読み込むと、Error : C:\Users\User\.gradle\caches... と表示されて gradle の処理が出来なくなる場合の対処

Stack Overflow にて対応策が二つ書かれています。

1) ファイルメニューから Invalidate Caches/Restart 後ビルドから Clean Project を実行
2) C:\Users\User\.gradle を全て削除する
(※ User は PC のログインユーザと置き換えて下さい)

かなり、Android Studio の起動が遅くなっていたので、2) のほうを実行しました。エラーは回避されて通常通り動作するようになりました。

1) は試していませんが、開いたプロジェクトのみの対応になると思います。時々、2) を実行する運用が良いかと思います。但し、相当量のファイル量と数の為( 今回は 500M )少し時間がかかります。

関連する記事

Android Studio のとんでもないエラー『Some conflicts found in installation area』のなんとか対処法( 最悪は再インストールなので )




posted by at 2016-01-29 20:05 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2015年11月15日

Android Studio 1.4.1 : Android 純正 Data Binding テンプレート



▼ Google の英文説明
Data Binding Guide : Android Developers

開始メニューからのインポート時の注意事項

Android Studio のバグで、バインド用のクラスでエラーが出ると思いますが、そのまま動作するはずです。エラーを無くすには、activity_main.xml を変更すると参照エラーは消えます。( variable 要素を削ったり戻したりして確認しました )
しかし、メソッドの参照エラーが残るので、いったんプロジェクトを閉じてから、再度開くと正常に戻ると思います。

また、SDK の場所が違うので、以下のようなダイアログが出ますが、自動的に修復するようです



Data Binding の注意事項

1) 全て UTF-8 を使用しましょう
2) クラスから画面へ一方通行です
3) 画面定義内に日本語を使用してはいけません
4) 細かい技は使わないほうが吉です( Google Gson に任せましょう )

テンプレートの概要



1) 元データとして WEB を想定しています
2) 通信用のデータフォーマットは、JSON です
3) WEB 側は PHP を使用しています( PHP ソースコードも同梱 : app\web の中です。AN HTTP Server で直接その場所を atest としてエイリアスを作成してテストしています )
4) AN HTTP Server でテストしています( AN HTTP Server のダウンロードと注意事項はこちらから )
5) JSON の処理に、Google Gson を使用しています
6) データベースの定義は同梱していませんが、『コード、氏名、フリガナ』という簡単なテーブルです
7) 実機は、API 19: Android 4.4 (KitKat) を想定しています。必要ならば、Min Sdk を下げて下さい
8) 実機の場合、WiFi で接続して、IP アドレスで PC にアクセスしてテストしました



タグ:android PHP
posted by at 2015-11-15 00:42 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2015年07月16日

Android アプリ作成の基礎 : PDF で問題

前期試験問題の内容です。実際の講義は最初から全て Android Studio で行っています。

(1) 〜 (3) は通常の Java についての問題です。

Android 基礎の(1)
Android 基礎の(2)
Android 基礎の(3)
Android 基礎の(4)
Android 基礎の(5)
Android 基礎の(6)
Android 基礎の(7)
Android 基礎の(8)
関連する記事

PHP の基礎 : PDF で問題



タグ:android java
posted by at 2015-07-16 00:50 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2015年07月06日

Android Chrome の 謎の(?) 241文字仕様 / 241文字以上のコンテンツは文字が大きく表示される

▼ 241 文字の場合


▼ 240 文字の場合


ソースコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<style>
div {
	font-weight: bold;
	font-family: "Hiragino Kaku Gothic ProN", "メイリオ", Meiryo, "MS Pゴシック", sans-serif;
}
</style>
</head>

<body>
<div>ある日の事でございます。御釈迦様は極楽の蓮池のふちを、独りでぶらぶら御歩きになっていらっしゃいました。池の中に咲いている蓮の花は、みんな玉のようにまっ白で、そのまん中にある金色の蕊からは、何とも云えない好い匂が、絶間なくあたりへ溢れて居ります。極楽は丁度朝なのでございましょう。やがて御釈迦様はその池のふちに御佇みになって、水の面を蔽っている蓮の葉の間から、ふと下の容子を御覧になりました。この極楽の蓮池の下は、丁度地獄の底に当って居りますから、水晶のような水を透き徹して、三途の河</div>
</body>
</html>

どちらも同じ HTML で、文字数の違いだけで、こうなります。これは、Google Chrome の Device Mode で表示した時も同様です。実際問題、iPhone の実機では当然そうはなりませんが、Google Chrome の Device Mode 上では同じ動作をします

http://toolbox.winofsql.jp/div_ok.html
http://toolbox.winofsql.jp/div_no.html

DIV のかわりに、PRE を使用しても再現できますが、その場合は 『white-space: pre-wrap』が必要になります

これは、自動的に 241 文字以上あるコンテンツは、PC と スマホの両方で可読性が同様である事を意味します。


posted by at 2015-07-06 01:16 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする

2015年06月28日

Android Studio : 行の途中で改行した時のインデント数を 1 にする



※ default そのものは変更できずに、設定変更によって default(1) が作成されています

タブサイズが、インデントの一つのサイズになりますが、デフォルトでは 8 になってしまっていたので、一つ多くインデントされていました。

タブサイズと同じ数字にします( ここでは 4 )




タグ:Android Studio
posted by at 2015-06-28 23:33 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX