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

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

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

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android 3.x で View の高さ表示が他と違う

Android の複数のバージョンに対応したアプリを作っていたところ Android 3.x だけ高さの表示がおかしくなるという現象が発生しました。

どうなったかというと…
アイテムを2行表示するようにカスタマイズした ListView を作成した時に
( android.R.layout.simple_list_item_2 や android.R.layout.two_line_list_item を想像してください)
空文字が設定された行が表示されなくなってしまいました

Android 2.x とAndroid 4.x は表示されるのに Android 3.x では表示されない

本来であれば空文字が設定されても全て同じ高さの ListView が表示されるはずが Android 3.x の端末だけ空文字行が表示されないため、高さが疎らな ListView になってしまいました。

で、何が原因なのか TextView を使って検証してみました。
(検証内容は画面イメージ + XML を見てください)

【結果】
行に空文字が設定された場合…
Android 2.x と Android 4.x では、文字の高さの領域は確保される(横は確保されない)が
Android 3.x では文字の高さの領域は確保されない
ただし、どのバージョンでも高さ(android:layout_height)に値を設定していればその分の領域は確保される

つまり表示したかったら明示的に高さを設定しろ、ということのようです。
※android:text に何か文字(半角スペース可)を入れても正しく表示されます

他にも Spinner で試したところ縦位置が若干ずれて表示されました...

■ 画面イメージ -----------------------------------------------
↓ Android 2.2 (API 8)
android_TextView_3x_1.png
↓ Android 3.2 (API 13)
android_TextView_3x_2.png
※ 検証する TextView の設定値は wrap_content を基準とし
  白枠に書かれた修正が加えられています

■ XML --------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="文字あり"
android:textColor="#000000" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffff00"
android:text="TextView"
android:textColor="#000000" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="文字なし"
android:textColor="#000000" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffff00" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="android:layout_width=match_parent"
android:textColor="#000000" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffff00" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="android:layout_height=match_parent"
android:textColor="#000000" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#ffff00" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="android:layout_weight=30dp"
android:textColor="#000000" />
<TextView
android:layout_width="30dp"
android:layout_height="wrap_content"
android:background="#ffff00" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="android:layout_height=30dp"
android:textColor="#000000" />
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:background="#ffff00" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="文字サイズ指定"
android:textColor="#000000" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffff00"
android:textSize="30sp" />
</LinearLayout>

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="終わり"
android:textColor="#000000" />
</LinearLayout>
スポンサーサイト

Comments

Leave a Comment


Body
プロフィール

とむ・やむくん

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

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

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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。