当前位置: 首页 > 知识库问答 >
问题:

材料设计步进控制

微生德泽
2023-03-14

有人能告诉我如何开始实施Android Material Design guide中描述的垂直非线性步进控制吗

http://www.google.com/design/spec/components/steppers.html

共有3个答案

穆锋
2023-03-14

因为不存在支持库解决方案(仍然存在),我在最近的一个项目中尝试了其中的几个库。我最喜欢的(外观、流畅性和功能)是“ernestoyaquello”的这个项目。我还在My Fork上为它添加了一些选项。

唯一需要注意的是,它不使用“适配器”类,而是使用回调接口。

Git的演示屏幕:

尉迟清野
2023-03-14

嗯,不完全一样,但根据我的要求,我开发了定制的垂直步进机。下面是整个演示的源代码。

主要活动。xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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"
    android:orientation="vertical">

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"/>

</LinearLayout>

单项列表(在raw.xml文件中设计你的步进器的单项)

raw.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"
    android:orientation="vertical">

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


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/iv_upper_line"
                android:layout_width="wrap_content"
                android:layout_height="20dp"
                app:srcCompat="@drawable/order_status_line" />

            <ImageView
                android:id="@+id/iv_circle"
                android:layout_width="30dp"
                android:layout_height="30dp"
                app:srcCompat="@drawable/circle_o" />

            <ImageView
                android:id="@+id/iv_lower_line"
                android:layout_width="wrap_content"
                android:layout_height="20dp"
                app:srcCompat="@drawable/order_status_line" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ly_status"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:gravity="center"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv_status"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="Order Rcived"
                android:layout_gravity="left"
                android:textSize="18sp"
                android:textStyle="bold" />

            <LinearLayout
                android:id="@+id/ly_orderstatus_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical|top"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/imageview"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    app:srcCompat="@drawable/ic_restore_black" />

                <TextView
                    android:id="@+id/tv_orderstatus_time"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center_vertical|top"
                    android:text="8:30am,Jan 31,2018"
                    android:textSize="18sp" />
            </LinearLayout>
        </LinearLayout>

    </LinearLayout>

</LinearLayout>

主要活动

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        orderStatusList();
    }

    private void orderStatusList() {

        ArrayList<OrderStatusModel> arrayOfStatus =OrderStatusModel.getStoreDetail();
        OrderStatusAdapter adapter = new OrderStatusAdapter(this, arrayOfStatus);
        ListView listView = (ListView) findViewById(R.id.list);
        listView.setAdapter(adapter);

    }

适配器类

    class OrderStatusAdapter extends ArrayAdapter<OrderStatusModel> {

    Context context;
    ArrayList<OrderStatusModel> order_status;
    boolean isOn = false;
    public OrderStatusAdapter(Contextcontext,ArrayList<OrderStatusModel>order_status{super(context, 0, order_status);
    this.context = context;
    this.order_status = order_status;

}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    // Check if an existing view is being reused, otherwise inflate the view if(convertView==null)convertView=LayoutInflater.from(getContext()).inflate(R.layout.raw,parent,false);

    }

    // Get the data item for this position
    OrderStatusModel order_status_data = getItem(position);

    // Lookup view for data population
    ImageView iv_upper_line = (ImageView) 
              convertView.findViewById(R.id.iv_upper_line);
    ImageView iv_lower_line =(ImageView) 
              convertView.findViewById(R.id.iv_lower_line);
    final ImageView iv_circle = (ImageView) convertView.findViewById(R.id.iv_circle);
    TextView tv_status = (TextView) convertView.findViewById(R.id.tv_status);
    TextView tv_orderstatus_time =(TextView) 
             convertView.findViewById(R.id.tv_orderstatus_time);
    LinearLayout ly_orderstatus_time = (LinearLayout) 
                 convertView.findViewById(R.id.ly_orderstatus_time);
    LinearLayout ly_status = (LinearLayout) convertView.findViewById(R.id.ly_status);

    // Populate the data into the template view using the data object

    tv_status.setText(order_status_data.getTv_status());
    tv_orderstatus_time.setText(order_status_data.getTv_orderstatus_time());

    if(position == 0){
        iv_upper_line.setVisibility(View.INVISIBLE);
    }
    else if (position == order_status.size()-1){

        iv_lower_line.setVisibility(View.INVISIBLE);
        ly_orderstatus_time.setVisibility(View.GONE);
    }

    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            iv_circle.setBackgroundResource(R.drawable.bullseye);

            Toast.makeText(context, "You Clicked at 
                          item"position,Toast.LENGTH_SHORT).show();
        }

    });
    // Return the completed view to render on screen
        return convertView;
}
}

模范班

private String tv_status;
    private String tv_orderstatus_time;

    public OrderStatusModel(String tv_status, String tv_orderstatus_time) {
        this.tv_status = tv_status;
        this.tv_orderstatus_time = tv_orderstatus_time;
    }

    public String getTv_status() {
        return tv_status;
    }

    public void setTv_status(String tv_status) {
        this.tv_status = tv_status;
    }

    public String getTv_orderstatus_time() {
        return tv_orderstatus_time;
    }

    public void setTv_orderstatus_time(String tv_orderstatus_time) {
        this.tv_orderstatus_time = tv_orderstatus_time;
    }

    public static ArrayList<OrderStatusModel> getStoreDetail() {
        ArrayList<OrderStatusModel> status = new ArrayList<OrderStatusModel>();
        status.add(new OrderStatusModel("Order Rcived", "8:30am,Jan 31,2018"));
        status.add(new OrderStatusModel("On The Way", "10:30am,Jan 31,2018"));
        status.add(new OrderStatusModel("Delivered", "aaaaaa"));
        return status;
    }
莘钧
2023-03-14

您可以检查此库,但它仍在开发中。

只需扩展mobile eStepperSimple类并实现方法init, onFinished。

通过扩展stepperFragment,可以将Stepper添加为片段,并实现onNextButtonHandler来处理下一步按钮单击。

查看演示以了解更多使用情况。

任何贡献和优化都将有所帮助。

 类似资料:
  • 简单地说,我不想使用第三方库,我只想知道是否可以使用android支持库以及如何做到这一点。

  • 如何使用材质设计将按钮放置在图中所示的位置? 这是index.html模板上的代码。 这是材质设计的css样式。 Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eusmod tempor incidunt ut labore et dolore magna aliqua.Ut enim ad minim veniam,

  • 嗨,我是一个新的材料设计,我试图使卡片部分响应媒体查询和Flex。由于某种原因,当卡片切换到列时,只显示图像的一部分,而卡片的其余部分(如文本)不再显示。我发现让组件响应非常混乱。我是不是漏掉了什么?

  • 什么是材料设计 材料设计是跨平台的视觉,动作和交互设计的综合指南

  • 我在Eclipse控制台上没有重述任何错误,但当我在智能手机上打开应用程序(三星Galaxy Ace 4 with Android 4.4.4)时,会出现一个弹出图标,显示,我收到错误。 唯一可行的解决方案就是这样,但它不支持Lollipop之前的设备(仅支持API 21及更高版本)。 我最终尝试使用在这里找到的一个不同的支持库,但我不知道如何使用“Ray's Lib”库。

  • 我有一个带有Datepicker的 在以前的Android版本中,数据提示是这样的: 我可以毫无问题地滚动Datepicker的单个元素日、月、年 似乎被忽略了 我如何解决这个问题???