活动A 中有listView
和imageView
,text
和button
。如果 listView.size 等于0,则会显示image
,text
和button
,如果不等于0,则会显示{{ 1}}。
我需要有一个单独的布局吗?一个用于listView
,imageView
和text
,另一个用于button
?
目前我使用相同的布局,但是当我使用真实设备运行时,listView
,image
和text
的设计会稍微运行。
button
Android Studio
真实设备(仅显示图片,文字和按钮,因为listView.size等于0)
答案 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中,它们是重叠的。