使用真实设备时运行布局

时间:2016-01-22 03:29:45

标签: android xml listview

活动A 中有listViewimageViewtextbutton。如果 listView.size 等于0,则会显示imagetextbutton,如果不等于0,则会显示{{ 1}}。

我需要有一个单独的布局吗?一个用于listViewimageViewtext,另一个用于button

目前我使用相同的布局,但是当我使用真实设备运行时,listViewimagetext的设计会稍微运行。

button

Android Studio

enter image description here

真实设备(仅显示图片,文字和按钮,因为listView.size等于0)

enter image description here

4 个答案:

答案 0 :(得分:1)

在您的XML文件中,您使用了导致问题的relativelayout属性对所有值进行了硬编码。由于所有设备都具有不同的密度像素,因此渲染得以实现,因此您应尽可能避免硬编码。

试试这段代码: -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <ImageView

        android:src="@mipmap/ic_launcher"
        android:paddingTop="30dp"
        android:layout_centerInParent="true"
        android:layout_width="330dp"
        android:layout_height="300dp"
        android:id="@+id/imageView"
        android:paddingLeft="20dp"></ImageView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="No Data"
        android:textSize="15dp"
        android:textColor="@color/colorAccent"
        android:gravity="center"
        android:id="@+id/NoData"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/imageView"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add Data"
        android:id="@+id/button2"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/NoData"/>



    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView2"
            android:layout_weight="1"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true" />



    </RelativeLayout>


</RelativeLayout>

答案 1 :(得分:1)

像这样修复你的布局

<ImageView
    android:src="@mipmap/data"
    android:paddingTop="30dp"
    android:layout_gravity="center"
    android:layout_width="330dp"
    android:layout_height="300dp"
    android:id="@+id/imageView"
    android:paddingLeft="20dp"
    android:layout_above="@+id/button2"
    android:visibility="gone"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add Data"
    android:id="@+id/button2"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/imageView"
    android:visibility="gone"/>

然后在你的代码中做这个检查:

if(yourList.length() != 0){
   mImageView.setVisibility(View.VISIBLE); 
   mButton.setVisibility(View.VISIBLE); 
}else{
   mImageView.setVisibility(View.GONE); 
   mButton.setVisibility(View.GONE); 
}

答案 2 :(得分:0)

您需要使用View类的可见性为变量设置它。

在你的java代码中:

 mTextview.setVisibility(View.GONE); //or View.INVISIBLE

使用以下命令将您的默认值设置为XML:

<View android:id="@+id/myView" android:visibility="gone" />

答案 3 :(得分:0)

其中一个原因是你的真实设备和android studio中的设计屏幕是不同的(大小,dpi,...)。你应该检查它们。此外,你已经把imageView的宽度和高度设置为330dp,对某些设备来说太大了。

你的ImageView,TextView和Button都是layout_gravity =&#34; center&#34;在一个RelativeLayout中,它们是重叠的。