内容在Android 4.1.1中脱离屏幕

时间:2014-03-02 14:42:03

标签: android android-activity

我最近注意到,当我在Android 4.1.1中检查我的应用程序时,我的内容离开了屏幕,但在上面的4.2.2中运行良好。请查看屏幕截图。

enter image description here

是的,它是一个双语应用程序(英语/泰米尔语)。经过一些研究,我发现英文ListItem运作良好,但泰米尔语导致问题

enter image description here

布局代码:

activity_latest_news.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".LatestNews" >

<ListView
    android:id="@+id/LatestNewsView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" >

</ListView> </RelativeLayout>

latest_news_single_view.xml

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

    <TextView
        android:id="@+id/LatestNews_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="@string/latest_news_dummy_title"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/LatestNews_description"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@id/LatestNews_title"
        android:text="@string/latest_news_dummy_desc"
        android:textColor="@color/getCCC"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/LatestNews_posted_on"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/LatestNews_description"
        android:paddingLeft="3dp"
        android:paddingTop="2dp"
        android:text="@string/latest_news_posted"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="#911991" />

    <ImageView
        android:id="@+id/latest_news_addfav"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/LatestNews_posted_on"
        android:src="@drawable/star"
        android:layout_alignParentRight="true" />

</RelativeLayout>

这是Unicode问题吗?还是布局问题?

还请看看两个模拟器。如果你注意到,在4.1.1中主题就像灰白色,而在4.2.2中是完全白色..甚至可绘制(刷新图像)看起来很奇怪(是的,我知道我没有为mdpi设置单独的drawable, hdpi等)但是造成差异的原因是什么?这是应用主题问题吗?

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

尝试更改下面的布局并检查会发生什么。

您的列表视图布局:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LatestNewsView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">        
</ListView>

行布局:

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

    <TextView
        android:id="@+id/LatestNews_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"            
        android:text="@string/latest_news_dummy_title"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/LatestNews_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"            
        android:layout_below="@id/LatestNews_title"
        android:text="@string/latest_news_dummy_desc"
        android:textColor="@color/getCCC"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/LatestNews_posted_on"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"            
        android:layout_below="@+id/LatestNews_description"
        android:paddingLeft="3dp"
        android:paddingTop="2dp"
        android:text="@string/latest_news_posted"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="#911991" />

    <ImageView
        android:id="@+id/latest_news_addfav"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/LatestNews_posted_on"
        android:src="@drawable/star"
        android:layout_alignParentRight="true" />

</RelativeLayout>

图像问题:

你可以看到一个模拟器是Nexus S,一个是Nexus One,因此它们的ppi值存在差异,导致问题。你需要为相应的密度设置合适的图像。

更新 check this它可能会有所帮助

答案 1 :(得分:0)

尝试并手动指定每个文本视图的行数。例如,将第一个TextView更改为如下所示:

<TextView
        android:id="@+id/LatestNews_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:singleLine="false"
        android:maxLines="3"
        android:ellipsize="end"
        android:text="@string/latest_news_dummy_title"
        android:textSize="15sp" />

请注意,我添加了:

android:singleLine="false" <!-- Allows content to wrap into other lines -->
android:maxLines="3"       <!-- Makes maximum no. of line wraps = 3 -->
android:ellipsize="end"    <!-- Adds an ellipsis (...) to the end of line-->

附注:您正在混合fill_parentmatch_parent。他们做同样的事情。为了更加一致,请坚持match_parent

编辑:另外,摆脱layout_alignParentRight="true"。我不认为你需要它,因为宽度已经填充父视图。使用layout_alignParentLeft =“true”就足够了,因为英语和泰米尔语都是从左到右书写的。