Android 用于颜色变换器(如Aviary')的滚动视图或列表视图;s
我有一个应用程序,我试图实现一个颜色选择器。现在我有一个水平滚动视图和一个线性布局。LinearLayout内有相应颜色的按钮。虽然这确实有效,但我希望它更像是一个滑块,指示器上方的任何颜色都是设定的颜色。它就像鸟舍照片应用程序中的文本颜色选择器。仅使用ListView或ViewPager是否可以更好地实现这一点 这里是一个鸟舍颜色滑块的屏幕截图,我想模仿它的基本功能 ScrollView的xml代码:Android 用于颜色变换器(如Aviary')的滚动视图或列表视图;s,android,listview,scrollview,android-background,Android,Listview,Scrollview,Android Background,我有一个应用程序,我试图实现一个颜色选择器。现在我有一个水平滚动视图和一个线性布局。LinearLayout内有相应颜色的按钮。虽然这确实有效,但我希望它更像是一个滑块,指示器上方的任何颜色都是设定的颜色。它就像鸟舍照片应用程序中的文本颜色选择器。仅使用ListView或ViewPager是否可以更好地实现这一点 这里是一个鸟舍颜色滑块的屏幕截图,我想模仿它的基本功能 ScrollView的xml代码: <HorizontalScrollView android:layout_
<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>
发布代码,然后说这是你的问题。我的代码很好用。我的问题主要是如何实现我的新目标。我想根据滚动位置选择按钮,而不是触摸按钮。在ScrollView中也可以这样做吗?我还希望避免单独对每个按钮进行充气。@pdfj我也有类似的问题。想要创建一种颜色滑块/颜色转盘,根据指示器下方的颜色改变背景颜色。你找到解决办法了吗?
@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;
}
}
}