3

画面サイズが異なり、密度が同じ2つのデバイスに1つの画像(1280x800)を使用したいと思います。

画面サイズはと1280x800です320x480

画像は9つのパッチ(コンテンツ領域付き)です。テキストビューを持つ行の背景に画像を使用したい。テキストに手動のパディングを使用しないでください(コンテンツ領域を使用したい)。

このxmlを使用する場合:

<RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:foo="http://schemas.android.com/apk/res/pak.name"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@layout/menu_selector"
android:gravity="right|center_vertical">

<pack.name.TextViewPlus
    android:id="@+id/menutext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#3D1E00"
    android:textSize="@dimen/TitleNormalM"
    foo:customFont="font.ttf"
    android:text="blah blah"/>

エミュレータの出力は次のとおりです。

http://ivm.neru9.com/pic/2ccf95a7f2e1.png

そして私がこのxmlを使用する場合:

<RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:foo="http://schemas.android.com/apk/res/pack.name."
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingRight="15dp"
android:paddingLeft="15dp">

<ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@layout/menu_selector"
    android:scaleType="fitCenter"
    />

<pack.name..TextViewPlus
    android:id="@+id/menutext"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#3D1E00"
    android:textSize="@dimen/TitleNormalM"
    foo:customFont="font.ttf"
    android:gravity="right|center_vertical"
    android:text="blah blah blah"/>

出力は次のとおりです。

http://ivm.neru9.com/pic/f20f7f5d2e7a.png

これはlistviewxmlです(この質問では重要ではないと思います):

<ListView
    android:id = "@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="@null"
    android:dividerHeight="3dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:cacheColorHint="@android:color/transparent"
    android:listSelector="@android:color/transparent"
    />

レイアウトフォルダにあるmenu_selectorxmlコード:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item android:state_pressed="true" android:drawable="@drawable/bg_menu_pressed" />
<!-- selected -->
<item android:state_selected="true" android:drawable="@drawable/bg_menu_focused" />
<!-- selected & pressed -->
<item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/bg_menu_pressed" />
<!-- default -->
<item android:drawable="@drawable/bg_menu" /> 

4

2 に答える 2

2

このプロジェクトをチェックしてください。

基本的に問題はあなたの 9 パッチ イメージです。私はあなたの問題の望ましいパフォーマンスのためにイメージを変更するだけです。

上記のリンクされたプロジェクトから、解像度 1280x800 には bg_menu277x77 を、解像度 320x480 には bg_menu144x40 を使用することをお勧めします。テストのために、両方の画像を両方の解像度で交換して試してみることができます。

ベロー私はあなたがそれをググることができる9パッチ画像、他の素晴らしいチュートリアルと情報を説明するために最善を尽くします:)

ここに画像の説明を入力

于 2012-08-13T19:14:18.553 に答える
0

あなたの要件を正しく理解している場合は、リスト ビューが必要です。リスト ビューの各行には、テキストを表示するための背景とテキスト ビューが含まれています。
この目的で画像ビューを使用する必要はありません。必要なことは、レイアウト コンテナーとテキスト ビューの背景を配置することだけです。

これを達成する方法は次のとおりです。

<RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:foo="http://schemas.android.com/apk/res/pack.name."
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingRight="15dp"
android:paddingLeft="15dp"
android:background="@drawable/some_drawable or any selector">

<pack.name..TextViewPlus
    android:id="@+id/menutext"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#3D1E00"
    android:textSize="@dimen/TitleNormalM"
    foo:customFont="font.ttf"
    android:gravity="right|center_vertical"
    android:text="blah blah blah"/>
</RelativeLayout>

コードの問題は、個々の行項目の高さと幅として fill_parent を使用していることです。代わりに、上記のコードに示すように、幅として fill_parent を使用し、高さとして wrap_content またはいくつかの dp 値を使用する必要があります。

これが役立つことを願っています:)

于 2012-08-13T12:21:23.350 に答える