2016-01-22 30 views
1

有一個listViewimageView,textbutton活動A。如果listView.size等於0,則會顯示image,textbutton,如果不等於0,則會顯示listView使用真實設備時的佈局運行

我需要爲此有一個單獨的佈局嗎?一個用於imageView,textbutton,另一個用於listView

目前我使用相同的佈局,但是當我使用我的真實設備運行時,image,textbutton的設計稍微運行。

<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="wrap_content" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 

    <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"></ImageView> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="No Data" 
     android:textSize="15dp" 
     android:layout_marginLeft="140dp" 
     android:paddingTop="160dp" 
     android:textColor="@color/honey_dew2" 
     android:layout_gravity="center" 
     android:id="@+id/NoData"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Add Data" 
     android:paddingTop="20dp" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="130dp" 
     android:id="@+id/button2" 
     android:layout_centerVertical="true" /> 



    <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> 

Android Studio中

enter image description here

真實設備(顯示圖像,文本和按鈕僅因爲listView.size等於0)

enter image description here

回答

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); 
} 
+0

'java.lang.IllegalStateException:在RelativeLayout中不存在循環依賴關係' – Tony

+0

SIR CAN YOU PLEASE HELP http:// stackoverflow。com/users/2987882/ai – Tony

+0

@Tony這是什麼鏈接,問題在哪裏 – meda

0

你需要設置th是使用View類的可見性的變量。

在Java代碼:

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

設爲您的默認值來在該XML使用:

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

其中一個原因是多方面的是你真正的設備和Android的工作室設計的屏幕是不同的(大小,dpi,...)。你應該檢查他們兩個。此外,你已經把imageView的寬度和高度設置爲330dp,對於某些設備來說太大了。

您的ImageView,TextView和Button在一個RelativeLayout中都是layout_gravity =「center」,因此它們重疊。

1

在你的XML文件中,你已經硬編碼了所有的值,但是沒有正確使用導致你問題的相關佈局屬性。由於所有設備都有不同的密度像素,因此渲染會受到影響,所以應儘可能避免硬編碼。

試試這個代碼: -

<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> 
+0

如何使'NoData'文本顯示在圖像下面? – Tony

+1

我編輯了我的代碼。你可以檢查它 –

相關問題