自定义Android小工具

时间:2014-04-10 14:37:43

标签: android android-layout

我需要创建一个如下图所示的小部件: enter image description here

照片的上半部分类似于我的服装小部件的正常状态,它的下半部分类似于小部件的高亮状态。

小部件主要功能:

  1. 正常和突出显示的状态可以同时具有图像颜色的背景。
  2. 它可以轻松地按宽度重新调整大小(例如200dp或100dp)
  3. 我有3个问题:

    1. 是否有任何特定的小部件可以帮助我创建像我说的那样的东西?
    2. 或者我应该自己创建一个自定义小部件?

1 个答案:

答案 0 :(得分:1)

使用Vertical LinearLayout和两个子TextView for Title和description创建自定义布局。

将描述TextView可见性设置为GONE,因为您只需要在高亮状态下显示描述。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_highlight"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/image_shape">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Title"
    android:textStyle="bold"
    android:textSize="30dp"
    android:layout_margin="10dp"/>

<TextView
    android:id="@+id/description"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello! Iam here to display the description"
    android:textStyle="italic"
    android:textSize="25dp"
    android:layout_margin="5dp"
    android:visibility="gone"/>

</LinearLayout>

现在,在代码上将描述TextView可见性更改为长按时可见。

    LinearLayout linearLayout = (LinearLayout)findViewById(R.id.layout_highlight);

    final TextView descriptionTextView = (TextView)findViewById(R.id.description);

    linearLayout.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            descriptionTextView.setVisibility(View.VISIBLE);
            return true;
        }
    });

此外,您需要在发布长按时隐藏说明。所以你必须有像这样的onTouch监听器..

linearLayout.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                descriptionTextView.setVisibility(View.GONE);
            }
            return false;
        }
    });