按钮出现在android API 19中,但不出现在API 17中

时间:2016-01-15 09:32:13

标签: android android-layout

目前,我正在使用 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)

enter image description here

Android 4.4.2(API 17)

enter image description here

4 个答案:

答案 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"/>
  1. 在您的xml中添加了硬编码的大值,但未显示 小装置。

  2. 避免使用硬编码值 android:layout_height="61dp" &amp; android:layout_marginTop=10dp"

  3. 您可以使用 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