3

我想为两个具有不同屏幕尺寸和相同密度的设备使用一张图像(1280x800)。

屏幕尺寸为1280x800320x480

图片是九个补丁(带内容区)。我想使用图像作为一行的背景,它有一个 textview 。并且不要对文本使用手动填充(我想使用内容区域)。

如果我使用这个 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

这是listview xml(我认为这对这个问题并不重要):

<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_selector xml 代码:

<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 补丁图像,我只是修改您的图像以获得您的问题所需的性能。

我会建议你使用 bg_menu277x77 用于 1280x800 和 bg_menu144x40 用于上述链接项目的 320x480 分辨率。只是为了测试,您可以交换两个图像的分辨率并尝试。

贝娄我尽力解释 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 回答