ScrollView中的卡片

时间:2017-09-22 09:13:45

标签: android xml scrollview android-cardview cardview

我在图像-1(https://imgur.com/a/aO5Ss)中显示了ScrollView中的这些cardView,其中设备是垂直的,一切都是假设的,但是当设备水平倾斜时,第4行的第2行得到了截止如图所示image-2(https://imgur.com/9ykZew4)。请帮助解决为什么会这样,以及如何解决这个问题。 (注意 - 在第4张卡片中有一个列表视图,它是由colmn_row.xml中的textview夸大的)

activity_main.xml中

  <?xml version="1.0" encoding="utf-8"?>


 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:background="#ddd"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main"
tools:context=".MainActivity">

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >




<android.support.v7.widget.CardView
    android:id="@+id/num_stu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:elevation="10dp"
        android:padding="16dp">

        <ImageView
            android:id="@+id/cardview_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginRight="18dp"
            android:src="@mipmap/ic_launcher_round" />

        <TextView
            android:id="@+id/cardview_list_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/cardview_image"
            android:paddingBottom="5dp"
            android:text="Students"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/num_boys"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/cardview_list_title"
            android:layout_toRightOf="@+id/cardview_image"
            android:textColor="#8b8b8b" />
        <TextView
            android:id="@+id/num_girls"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/cardview_list_title"
            android:layout_toRightOf="@+id/num_boys"
            android:textColor="#8b8b8b" />
        <TextView
            android:id="@+id/total_stu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/num_girls"
            android:layout_toRightOf="@+id/cardview_image"
            android:textColor="#8b8b8b" />

    </RelativeLayout>

</android.support.v7.widget.CardView>

<android.support.v7.widget.CardView
    android:id="@+id/num_teachers"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/num_stu"
    android:layout_marginTop="16dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:elevation="8dp"
        android:padding="16dp">

        <ImageView
            android:id="@+id/cardview_image1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginRight="18dp"
            android:src="@mipmap/ic_launcher_round" />

        <TextView
            android:id="@+id/cardview_list_title1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/cardview_image1"
            android:paddingBottom="5dp"
            android:text="Staff"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/numTeaching"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/cardview_list_title1"
            android:layout_toRightOf="@+id/cardview_image1"
            android:textColor="#8b8b8b" />
        <TextView
            android:id="@+id/non_num_Teaching"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/numTeaching"
            android:layout_toRightOf="@+id/cardview_image1"
            android:textColor="#8b8b8b" />

    </RelativeLayout>

</android.support.v7.widget.CardView>

<android.support.v7.widget.CardView
    android:id="@+id/attendance"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:elevation="5dp"
        android:padding="16dp">

        <ImageView
            android:id="@+id/cardview_image2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginRight="18dp"
            android:src="@mipmap/ic_launcher_round" />

        <TextView
            android:id="@+id/cardview_list_title2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/cardview_image2"
            android:paddingBottom="5dp"
            android:text="Attendance"
            android:textSize="24sp" />


        <TextView
            android:id="@+id/stuatten"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/cardview_list_title2"
            android:layout_toRightOf="@+id/cardview_image2"
            android:textColor="#8b8b8b"/>
        <TextView
            android:id="@+id/staffatten"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/stuatten"
            android:layout_toRightOf="@+id/cardview_image2"
            android:textColor="#8b8b8b" />


    </RelativeLayout>

</android.support.v7.widget.CardView>

<!-- Fourth Card -->

<android.support.v7.widget.CardView
    android:id="@+id/notice"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#fff"
        android:elevation="8dp"
        android:padding="16dp">



        <TextView
            android:id="@+id/title"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentTop="true"
            android:paddingBottom="5dp"
            android:textSize="19sp"
            android:textStyle="bold"
            android:text="ID"/>


        <TextView
            android:id="@+id/title1"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentTop="true"
            android:paddingBottom="5dp"
            android:textSize="19sp"
            android:textStyle="bold"
            android:layout_marginLeft="115dp"
            android:layout_toRightOf="@+id/title"
            android:text="Title"/>

        <TextView
            android:id="@+id/title2"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentTop="true"
            android:paddingBottom="5dp"
            android:textSize="19sp"
            android:textStyle="bold"
            android:layout_toRightOf="@+id/title1"
            android:layout_marginLeft="90dp"
            android:text="Date From"/>

        <TextView
            android:id="@+id/title3"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_marginRight="60dp"
            android:paddingBottom="5dp"
            android:textSize="19sp"
            android:textStyle="bold"
            android:text="Date To"/>


        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/title" >
        </ListView>



</RelativeLayout>
</android.support.v7.widget.CardView>

</LinearLayout>

</ScrollView>
</LinearLayout>

colmn_row.xml -

  <?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="wrap_content">


<TextView
    android:id="@+id/name"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:textStyle="bold"
    android:textSize="17sp"/>

<TextView
    android:id="@+id/gender"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:textSize="17sp"/>

<TextView
    android:id="@+id/age"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:textSize="17sp"/>

<TextView
    android:id="@+id/status"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_alignParentLeft="true"
    android:layout_weight="1"
    android:textSize="17sp"/>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

这是因为您在ScrollView中有一个LinearLayout:

enter image description here

尝试将wrap_content设置为layout_width和layout_height属性。

答案 1 :(得分:0)

此问题是由于 colmn_row.xml 中的 layout_weight 值不变, colmn_row.xml 将根据设备屏幕宽度进行渲染。并且所有四个项目将共享相等的宽度。使您的列标题也具有特定的设备宽度。

以下是第4张牌布局的代码,

<android.support.v7.widget.CardView
android:id="@+id/notice"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#fff"
    android:elevation="8dp"
    >



    <TextView
        android:id="@+id/title"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:paddingBottom="5dp"
        android:textSize="19sp"
        android:textStyle="bold"
        android:text="ID"/>


    <TextView
        android:id="@+id/title1"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:paddingBottom="5dp"
        android:textSize="19sp"
        android:textStyle="bold"
        android:layout_weight="1"
        android:text="Title"/>

    <TextView
        android:id="@+id/title2"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:paddingBottom="5dp"
        android:textSize="19sp"
        android:textStyle="bold"
        android:text="Date From"/>

    <TextView
        android:id="@+id/title3"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:paddingBottom="5dp"
        android:textSize="19sp"
        android:textStyle="bold"
        android:text="Date To"/>
   </LinearLayout>

    <LinearLayout
        android:id="@+id/dynamic_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>

编辑:将listview放在scrollview中是个坏主意,尝试将LinearLayout中的布局作为父级扩展或在NestedScrollView中使用reyclerview,我已将lisview更新为linearlayout

以下是动态创建viiew的代码

@Override
protected void onCreate(Bundle savedInstanceState) {

//....
linearLayout = (LinearLayout) findViewById(R.id.dynamic_layout);

    String[] demo = new String[]{"Hello","World","Java","Android"};
    linearLayout.removeAllViews();
    for(int i=0;i<demo.length;i++){
        addView(demo[i]);
    }
}

//Method to create view dynamically
private void addView(String data){
    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    //You can use this view to findViewById, setOnClickListener, setText etc;
    View view = layoutInflater.inflate(R.layout.column_row,null,false);

    //FindView using inflated view
    TextView textView = view.findViewById(R.id.name);
    linearLayout.addView(view);

}