目前,我正在使用 Android 4.4.2(API 19)来运行我的项目,我可以看到所有布局都能正常运行。但是,当我使用其他设备 Android 4.2(API 17)时,布局正在运行,并且部分按钮未显示(页脚布局)!我怎么解决这个问题?你们之前遇到过这个问题吗?谢谢。
ListView按钮
xml
中的按钮在我使用Android API时没有显示。只是一个普通的按钮。他们应该在有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="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/totalHours"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/hours"
android:paddingRight="10dp"
android:text=" Total Hours : "
android:textColor="@color/blue"
android:textSize="16sp"/>
<TextView
android:id="@+id/hours"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/submit"
android:paddingRight="15dp"
android:textColor="@color/blue"
android:textSize="16sp"/>
<Button
android:id="@+id/submit"
android:layout_width="334dp"
android:layout_height="61dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/addClaims1"
android:layout_marginLeft="15dp"
android:text="submit"
android:theme="@style/ButtonTheme"/>
<Button
android:id="@+id/addClaims1"
android:layout_width="334dp"
android:layout_height="61dp"
android:layout_marginTop="10dp"
android:layout_below="@id/totalHours"
android:layout_marginLeft="15dp"
android:text="add claims"/>
</RelativeLayout>
Android 4.4.2(API 19)
Android 4.4.2(API 17)
答案 0 :(得分:3)
在将适配器设置为addFooterView
之前,您必须先致电ListView
。
修改强>
修改您的代码,以便在设置适配器之前设置footerView,如下所示:
活动A
footerLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.under_list_view_button, null);
btnAddClaims = (Button) footerLayout.findViewById(R.id.addClaims1);
btnSubmit=(Button)footerLayout.findViewById(R.id.submit);
objMyCustomBaseAdapter = new MyCustomBaseAdapter(getApplicationContext(), results, listview, footerLayout);
addOrRemoveFooter();
listview.setAdapter(objMyCustomBaseAdapter);
public void addOrRemoveFooter(){
if(results.size() == 0 && listview.getFooterViewsCount() > 0){
// listview.removeFooterView(footer);
listview.removeFooterView(footerLayout);
}else if(listview.getFooterViewsCount() == 0 && results.size() > 0){
// listview.addFooterView(footer);
listview.addFooterView(footerLayout);
}
}
答案 1 :(得分:3)
实际上是您的XML问题。您需要纠正您的XML。
为什么会出现此问题
问题是你的Button
部分。
<Button
android:id="@+id/submit"
android:layout_width="334dp"
android:layout_height="61dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/addClaims1"
android:layout_marginLeft="15dp"
android:text="submit"
android:theme="@style/ButtonTheme"/>
<Button
android:id="@+id/addClaims1"
android:layout_width="334dp"
android:layout_height="61dp"
android:layout_marginTop="10dp"
android:layout_below="@id/totalHours"
android:layout_marginLeft="15dp"
android:text="add claims"/>
在您的xml中添加了硬编码的大值,但未显示 小装置。
避免使用硬编码值。 android:layout_height="61dp"
&amp; android:layout_marginTop=10dp"
。
您可以使用 layout_weight
属性。
您可以使用任何视图的浮点值设置权重属性 你在LinearLayout中使用。 Android将分割可用的 根据其重量,按比例在视图中间隔开 值。
LinearLayout还支持使用 android:layout_weight 属性为各个孩子分配权重。此属性根据屏幕应占用的空间为视图指定"importance"
值。
较大的权重值允许它展开以填充父视图中的任何剩余空间。子视图可以指定权重值,然后视图组中的任何剩余空间将按其声明权重的比例分配给子项。默认权重为零。
或者您可以使用DisplayMetrics
/*
* A structure describing general information about a display, such as its size, density, and font scaling.
* */
DisplayMetrics metrics = getResources().getDisplayMetrics();
int DeviceTotalWidth = metrics.widthPixels;
int DeviceTotalHeight = metrics.heightPixels;
LinearLayout LL_First_Section=(LinearLayout)findViewById(R.id.LinearLayout_Third_Invisible);
LL_First_Section.getLayoutParams().width=DeviceTotalWidth; // Add your width
LL_First_Section.getLayoutParams().height= (DeviceTotalHeight*18/100);
答案 2 :(得分:1)
您可以使用layout_weight来显示按钮并强制ListView
占用剩余空间。
尝试这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</ListView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/totalHours"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/hours"
android:paddingRight="10dp"
android:text=" Total Hours : "
android:textColor="@color/blue"
android:textSize="16sp"/>
<TextView
android:id="@+id/hours"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/submit"
android:paddingRight="15dp"
android:textColor="@color/blue"
android:textSize="16sp"/>
<Button
android:id="@+id/submit"
android:layout_width="334dp"
android:layout_height="61dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/addClaims1"
android:layout_marginLeft="15dp"
android:text="submit"
android:theme="@style/ButtonTheme"/>
<Button
android:id="@+id/addClaims1"
android:layout_width="334dp"
android:layout_height="61dp"
android:layout_below="@id/totalHours"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:text="add claims"/>
</RelativeLayout>
</LinearLayout>
答案 3 :(得分:1)
您需要同时使用left | start和right | end来获得对所有api级别的支持。 例如,我正在显示布局的1个按钮
Set