如何在corona,Lua中创建自定义按钮

我正在尝试制作一个移动应用程序,屏幕看起来像这样:

应用程序模型

我使用Corona编写Lua语言制作这个应用。

这是一个可滚动的按钮列表,我对滚动方面有些了解。我现在遇到的问题是制作一个可以具有多行文本和图像的按钮。我已经搜了几个小时了,但没有找到任何东西(我可能不擅长找东西)。 我想我需要创建一个自定义按钮,但我不知道如何做到这一点。如果您能提供一些帮助,这将是链接或仅几行文字来解释它,那么非常感谢!

点赞
用户4797289
用户4797289

使用自定义视图

custom_button_view.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/iconImgV"
        android:layout_alignParentRight="true"
        android:layout_width="100dp"
        android:layout_alignParentTop="true"
        android:background="#ff0000"
        android:layout_height="100dp" />

    <TextView
        android:id="@+id/titleTv"
        android:textSize="18sp"
        android:text="Title"
        android:layout_toLeftOf="@+id/iconImgV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/descriptionTv"
        android:layout_width="wrap_content"
        android:text="description"
        android:textSize="14sp"
        android:layout_below="@+id/titleTv"
        android:layout_toLeftOf="@+id/iconImgV"
        android:layout_height="wrap_content" />
</RelativeLayout>

CustomButtonView.java

public class CustomButtonView extends RelativeLayout {

    Context context;

    //view
    ImageView iconImgV;
    TextView titleTv, descriptionTv;

    //value
    int drawableIcon;
    String title,description;

    public CustomButtonView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.context = context;
        init();
    }

    public CustomButtonView(Context context) {
        super(context);
        init();
    }

    public CustomButtonView(Context context, AttributeSet attrs) {
        super(context, attrs);

        this.context = context;
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.customButtonViewAttrs);
        drawableIcon = typedArray.getInt(R.styleable.customButtonViewAttrs_drawableIcon,0);
        title = typedArray.getString(R.styleable.customButtonViewAttrs_title);
        description = typedArray.getString(R.styleable.customButtonViewAttrs_description);
        typedArray.recycle();

        init();
    }

    public void init() {

        if (isInEditMode())
            return;

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View myView = inflater.inflate(R.layout.custom_button_view, null);

        iconImgV = (ImageView) myView.findViewById(R.id.iconImgV);
        titleTv = (TextView) myView.findViewById(R.id.titleTv);
        descriptionTv = (TextView) myView.findViewById(R.id.descriptionTv);

        titleTv.setText(title);

        addView(myView);
    }
}

values/attrs.xml

<declare-styleable name="customButtonViewAttrs">
    <attr name="title" format="string" />
    <attr name="description" format="string" />
    <attr name="drawableIcon" format="integer" />
</declare-styleable>

您可以这样使用

<com.example.rasoul.testprojectstacj.CustomButtonView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:title = "Car"/>
2017-07-09 07:08:00
用户6897944
用户6897944

找到了一个解决办法,widget.newTable 完美解决了这个问题。

2017-07-09 19:07:14