向布局添加3D效果

时间:2018-11-05 07:54:28

标签: android android-layout

我正在使用framelayout和线性垂直布局创建一个android布局。 我有兴趣实现这一目标

我已经创建了布局并得到了

这是布局文件的代码

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".testActivity">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="TextView" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/textView15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="TextView" />
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/textView15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="TextView" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button" />
     </LinearLayout>
   </LinearLayout>
</FrameLayout>

使用framelayout的原因是因为我以后要添加浮动按钮。 如上图所示,如何在水平线性布局上获得3D效果。

3 个答案:

答案 0 :(得分:1)

首先,应该是RecyclerView

现在,关于layouts,有CardViewhere是结合RecyclerView和CardView的一个很好的例子。您也可以使用CardView从右侧实现该黑色按钮,但是我认为您应该使用AppCompatButton

如果您需要任何其他帮助,请发表评论。

编码愉快!

答案 1 :(得分:1)

  

您的解决方案在这里:

您可以使用此代码来存档您的UI

const data = [ { "deviceId": 121, "Pressure": 120 }, { "deviceId": 121, "Pressure": 80 }, { "deviceId": 130, "Pressure": 20 }, { "deviceId": 130, "Pressure": 25 }, { "deviceId": 130, "Pressure": 75 } ],
      result = Object.values(data.reduce((r, {deviceId, Pressure}) => {
        r[deviceId] = r[deviceId] || {deviceId, totalPressure : 0, count : 0};
        r[deviceId].totalPressure += Pressure;
        r[deviceId].count += 1;
        return r;
      }, {}))
      .map(({deviceId, totalPressure, count}) => ({deviceId, 'avg-Pressure' : totalPressure/count}));
      
console.log(result);

答案 2 :(得分:0)

您所说的 3D 布局是 cardElevation。只需在行上使用小心的高度,您就会膨胀。这意味着如果你有很多数据,你要么使用 Recyclerview,要么如果屏幕上的数据量很少,则使用硬编码 cardView。 主要是使用每个数据点的 cardElevation 属性。