fc2ブログ

戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23
24
25
26
27
28
29
30
31
08

スクロールバーを常に表示:fadeScrollbars

Android 2.2(Froyo)以降、ListView等のスクロールバーが自動で消えるようになってしまいました。
今回の記事は自動で消えてしまうスクロールバーを常に表示する方法について書きます。

※この記事を書くにあたり、Y.A.M の 雑記帳 - Android Froyo(2.2)でスクロールバーを常に表示する を参考にさせていただきました(無断)

スクロールバーを常に表示させるには、スタイルを使用した android:fadeScrollbars と、Javaソースコードで指定する View#setScrollbarFadingEnabled(boolean fadeScrollbars) の2種類の方法があります。
このどちらかを指定することにより対象の(ここではListView)スクロールバーが常に表示されるようになります。

res/layout/sample.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView android:id="@+id/lstSample"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:fadeScrollbars="false" />
</LinearLayout>

SampleActivity.java
// リストビューを取得する
ListView lstSample = (ListView) findViewById(R.id.lstSample);
// スクロールバーを表示させる
lstSample.setScrollbarFadingEnabled(false);



スクロールバーが複数ある場合、各々設定するのが面倒臭い!という時には、アプリケーションにテーマ指定することで全てのスクロールバーを常に表示させることが出来ます

/res/values/styles.xml
<resources>
<style name="SampleTheme">
<item name="android:fadeScrollbars">false</item>
</style>
</resources>

AndroidManifest.xml


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.inujirushi.sample"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@style/SampleTheme">
<activity android:label="@string/app_name" android:name="SampleActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

スポンサーサイト



画面遷移:startActivity

画面遷移するには Activity#startActivity(Intent intent) を使います。
引数のIntentクラスには、パッケージ(this)と、遷移先のActivityクラスを指定します。

遷移先のアクティビティは AndroidManifest.xml に登録する必要があります。
この登録を忘れて呼び出そうとすると ActivityNotFoundException が発生します。

Activityクラス
// インテントを生成
Intent intent = new Intent(SampleActivity.this, NextActivity.class);
// 次の画面のアクティビティを起動
startActivity(intent);

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.inujirushi.sample"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".SampleActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NextActivity"></activity>

</application>
</manifest>


次の画面に値を渡したい場合には Intent に Intent#putExtra(String name, String value) を使用して値を設定します。
第1引数の name がキーとなり、第2引数の value が値になります。
この値には int や boolean などさまざまな型を設定することが出来ます。

遷移元Activityクラス
// インテントを生成
Intent intent = new Intent(SampleActivity.this, NextActivity.class);
// 受け渡しする値を設定
intent.putExtra("name", "名前");
// 次の画面のアクティビティを起動
startActivity(intent);
↓↓↓
遷移先Activityクラス
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// アクティビティからインテントを取得
Intent intent = getIntent();
// インテントから保存データを取得
Bundle bundle = intent.getExtras();
// 保存データから値を取得
String name = bundle.getString("name");
// インテントから直接取得することも可能
//name = intent.getStringExtra("name");
}


※この記事のソースコードは全てActivityクラス内部のものになります
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始