我想在android xml中制作以下UI。我用谷歌搜索,但没有找到任何好结果。
我希望有一组可以填充颜色的圆圈?
我会有这样的数组[" Red"," Gray"," Yellow",...]并希望在下面呈现这些颜色控制。当我选择任何一种颜色时,它应该赋予它的价值。就像" Red"被选中它应该给我" Red"值已选中。
答案 0 :(得分:1)
这就是我所做的,但它不像单选按钮那样工作。
首先在values / colors.xml文件中添加所需的颜色
<color name="red">#d50000</color>
<color name="green">#33691e</color>
<color name="blue">#304ffe</color>
在drawable文件夹中添加此circle.xml drawable。此drawable将在运行时设置为视图(颜色按钮)的背景。
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#000000"/>
<size
android:width="24dp"
android:height="24dp"/>
</shape>
在你的布局文件中添加一个viewgroup(ex LinearLayout),它将包含颜色按钮(将在运行时添加)。设置视图组的ID以进行引用。
这是我做过的事情
<LinearLayout
android:id="@+id/container"
android:padding="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
</LinearLayout>
现在你必须添加代码,用Onclick监听器添加彩色按钮。
在您的activity类中添加一个int数组,它将保存颜色资源值
int[] colors = {R.color.blue, R.color.red,R.color.green};
添加另一个int变量来存储选定的颜色值
int selected_color;
现在在您的活动类中添加此方法,该方法将使用OnClick侦听器添加颜色视图(按钮)。单击颜色视图时,它会将颜色存储在selected_color变量中。
public void addColorChoices() {
LinearLayout container = (LinearLayout) findViewById(R.id.container);
int hw = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources().getDisplayMetrics());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(hw,hw);
int m = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12, getResources().getDisplayMetrics());
lp.setMargins(m,m,m,m);
View v;
for(final int color: colors) {
v = new View(this);
v.setBackground(getDrawable(R.drawable.circle));
v.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(color)));
v.setLayoutParams(lp);
v.setId(View.generateViewId());
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selected_color = color;
Toast.makeText(getApplicationContext(),"Selected Color: " + getResources().getResourceEntryName(selected_color),Toast.LENGTH_SHORT).show();
}
});
container.addView(v);
}
}
要添加更多颜色选择,只需在数组中添加颜色即可。从您的活动的OnCreate()方法中调用此方法。