- Date: Mon 22 08 2011
- Category: Android
- Response: Comment 0 Trackback 0
スクロールバーを常に表示: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
SampleActivity.java
スクロールバーが複数ある場合、各々設定するのが面倒臭い!という時には、アプリケーションにテーマ指定することで全てのスクロールバーを常に表示させることが出来ます。
/res/values/styles.xml
AndroidManifest.xml
今回の記事は自動で消えてしまうスクロールバーを常に表示する方法について書きます。
※この記事を書くにあたり、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>
スポンサーサイト
画面遷移するには Activity#startActivity(Intent intent) を使います。
引数のIntentクラスには、パッケージ(this)と、遷移先のActivityクラスを指定します。
遷移先のアクティビティは AndroidManifest.xml に登録する必要があります。
この登録を忘れて呼び出そうとすると ActivityNotFoundException が発生します。
Activityクラス
AndroidManifest.xml
次の画面に値を渡したい場合には Intent に Intent#putExtra(String name, String value) を使用して値を設定します。
第1引数の name がキーとなり、第2引数の value が値になります。
この値には int や boolean などさまざまな型を設定することが出来ます。
遷移元Activityクラス
遷移先Activityクラス
※この記事のソースコードは全てActivityクラス内部のものになります
引数の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クラス内部のものになります