2

我有一个应用程序,我正在尝试实现颜色选择器。现在我有一个带有 LinearLayout 的 Horizo​​ntal ScrollView。LinearLayout 内部是对应颜色的按钮。虽然这确实有效,但我想拥有它,所以它更像是一个滑块,指示器上方的任何颜色都将是设置颜色。这就像 Aviary 照片应用程序中的文本颜色选择器。仅使用 ListView 或 ViewPager 会更好吗?

这是我想在基本功能方面模拟的 Aviary 颜色滑块的屏幕截图。

在此处输入图像描述

滚动视图的xml代码:

 <HorizontalScrollView
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:id="@+id/horizontalScrollView"
    android:layout_above="@+id/edit_dateText"
    android:layout_marginBottom="400dp"
    android:padding="0dp"
    android:layout_alignParentRight="true"
    android:background="#333333"
    android:focusableInTouchMode="true">

    <LinearLayout
        android:orientation="horizontal"
        android:background="#333333"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="false"
        android:paddingEnd="5dp"
        android:paddingStart="5dp">

        <Button
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/color_button_green"
            android:background="@drawable/color_green"
            android:paddingLeft="0dp"
            android:paddingRight="0dp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="0dp" />

        <Button
            android:layout_width="30dp"
            android:layout_height="30dp"

            android:id="@+id/color_button_blue"
            android:paddingLeft="0dp"
            android:background="@drawable/color_blue"
            android:enabled="true"
            android:paddingRight="0dp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="0dp" />

        <Button
            android:layout_width="30dp"
            android:layout_height="30dp"

            android:id="@+id/color_button_red"
            android:paddingLeft="0dp"
            android:paddingRight="0dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/color_red"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="0dp" />

        <Button
            android:layout_width="30dp"
            android:layout_height="30dp"

            android:id="@+id/color_button_orange"
            android:paddingLeft="0dp"
            android:paddingRight="0dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/color_orange"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="0dp" />

        .........................................
    </LinearLayout>
</HorizontalScrollView>

onCreateView 覆盖和自定义 onCLickListener:

  @Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.edit_fragment, parent, false);

    mGreenColorButton = (Button) v.findViewById(R.id.color_button_green);
    mGreenColorButton.setOnClickListener(new MyClickListener());
    mBlueColorButton = (Button) v.findViewById(R.id.color_button_blue);
    mBlueColorButton.setOnClickListener(new MyClickListener());
    mRedColorButton = (Button) v.findViewById(R.id.color_button_red);
    mRedColorButton.setOnClickListener(new MyClickListener());
    mOrangeColorButton = (Button) v.findViewById(R.id.color_button_orange);
    mOrangeColorButton.setOnClickListener(new MyClickListener());
    mGrayColorButton = (Button) v.findViewById(R.id.color_button_gray);
    mGrayColorButton.setOnClickListener(new MyClickListener());
    mPurpleColorButton = (Button) v.findViewById(R.id.color_button_purple);
    mPurpleColorButton.setOnClickListener(new MyClickListener());
    return v;
}
private final class MyClickListener implements View.OnClickListener {

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.color_button_green:
                activeEditText.setBackgroundColor(Color.parseColor("#36D85C"));
            break;
            case R.id.color_button_blue:
                activeEditText.setBackgroundColor(Color.parseColor("#0C44E5"));
                break;
            case R.id.color_button_red:
                activeEditText.setBackgroundColor(Color.parseColor("#E22D3A"));
                break;
            case R.id.color_button_orange:
                activeEditText.setBackgroundColor(Color.parseColor("#F39D15"));
                break;
            case R.id.color_button_gray:
                activeEditText.setBackgroundColor(Color.parseColor("#555555"));
                break;

        }
    }
}
4

0 回答 0