2014-09-05 2 views
0

У меня есть следующий макет. Он выглядит нормально, когда я просматриваю его в графическом макете в Eclipse. Но когда на телефоне это не отражается.Относительная компоновка выглядит нормально в Eclipse, но не на устройстве

На телефоне TextView rowlogmessage занимает весь вид, а другой TextView s дробленый в нижней части.

Любые идеи, почему?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/rounded_corners_white" > 

    <TextView 
     android:id="@+id/rowlogmessage" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="log message goes here" 
     android:textColor="#707070" 
     android:layout_alignParentTop="true" /> 

    <TextView 
     android:id="@+id/rowlogcreatedat" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="log message created at" 
     android:textColor="#707070" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" /> 

    <TextView 
     android:id="@+id/rowlogcreatedatlabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Created at" 
     android:layout_alignParentLeft="true" 
     android:layout_above="@id/rowlogcreatedat" 
     android:paddingTop="10dp" /> 

    <TextView 
     android:id="@+id/rowlogsentserver" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="log message sent to server" 
     android:textColor="#707070" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" /> 

    <TextView 
     android:id="@+id/rowlogsentserverlabel" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Sent to server" 
     android:layout_alignParentRight="true" 
     android:layout_above="@id/rowlogsentserver" 
     android:paddingTop="10dp"/> 

</RelativeLayout> 

ответ

1

Да. Поместите «Я беру , оставшееся пространство» ПОСЛЕ всех других текстовых элементов (используйте атрибуты относительности, чтобы расположить его над тем, над которым он должен быть помещен, rowlogcreatedat и выровнять его с Верхним Ротором - как сейчас).

Также обратите внимание, что fill_parent устарел, поскольку включен уровень API 8.
Используйте вместо этого match_parent.

Обратите также внимание на то, что правильное именование Java использует camelCaseNamingConvention, причем первая буква является маленькими шапками.

+0

Спасибо, что сработал хорошо – turtleboy

+0

Рад это знать. Я тоже использую эту технику. ;) –

+0

Для соглашения об именах. Это не java, это XML. – 2016-03-13 22:03:04

-1

Я бы порекомендовал вас изменить ширину от fill_parent до wrap_content.

А также в режиме затмения измените вид устройства на это со своего телефона. По умолчанию eclipse использует экран 5-дюймового экрана Nexus 5.

0

попробовать это,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/holo_blue_light" 
    android:orientation="vertical" 
    android:padding="5dp" > 

    <TextView 
     android:id="@+id/rowlogmessage" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:text="log message goes here" 
     android:textColor="#707070" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/rowlogcreatedat" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="left" 
      android:text="log message created at" 
      android:textColor="#707070" /> 

     <TextView 
      android:id="@+id/rowlogcreatedatlabel" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:text="Created at" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/rowlogsentserver" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="left" 
      android:text="log message sent to server" 
      android:textColor="#707070" /> 

     <TextView 
      android:id="@+id/rowlogsentserverlabel" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:text="Sent to server" /> 
    </LinearLayout> 

</LinearLayout> 
0

Вы используете android:layout_alignParentBottom="true" в rowlogcreatedat, поэтому она выровнять дно screen.Your другого TestView ссылки этого rowlogmessage TextView или связанные с ним TextView поэтому они также attcached с нижней частью экрана вместе с ваш rowlogcreatedat TextView. Удалить android:layout_alignParentBottom="true", а затем посмотреть, как он устроен на экране. Также используйте match_parent вместо wrap_content.

Смежные вопросы