我想在android xml中製作下面的UI。我google搜索,但沒有找到任何好的結果。自定義無線電控制,在Android中填充顏色
我想擁有可以設置可以填充顏色的圓圈嗎?
我將會有這樣的數組[「紅色」,「灰色」,「黃色」,...],並希望在以下控件中呈現這些顏色。當我選擇任何一種顏色時,它應該給它的價值。就像選擇「紅色」時,它應該給我選擇「紅色」值。
我想在android xml中製作下面的UI。我google搜索,但沒有找到任何好的結果。自定義無線電控制,在Android中填充顏色
我想擁有可以設置可以填充顏色的圓圈嗎?
我將會有這樣的數組[「紅色」,「灰色」,「黃色」,...],並希望在以下控件中呈現這些顏色。當我選擇任何一種顏色時,它應該給它的價值。就像選擇「紅色」時,它應該給我選擇「紅色」值。
這就是我所做的,但它不會像單選按鈕一樣工作。
首先加入你想要的顏色值/ colors.xml文件
<color name="red">#d50000</color>
<color name="green">#33691e</color>
<color name="blue">#304ffe</color>
添加此circle.xml繪製繪製文件夾內。這個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中(前的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聽衆。
內,您的活動類添加一個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()方法調用此方法。
我不明白爲什麼人們投票。如果問題不好或需要一些編輯,那麼他們可以建議。我認爲這是有效的問題和需求解決方案。可能是問題話題不好解釋。我對此表示歉意。但請幫助我。謝謝。 –
不知道這與查找值[紅色,灰色等]或您是否要求自定義視圖不同。無論從[我可以問什麼主題?](https://stackoverflow.com/help/on-topic)'要求我們推薦或找到書籍,工具,軟件庫,教程或其他非現場資源,話題' –
嗨@MorrisonChang,我編輯了這個問題。希望能夠澄清這個問題。 –