2017-10-29 6 views
-5

アンドロイドXMLで次のUIを作りたいと思います。私はグーグルでは、良い結果が見つかりませんでした。アンドロイドで色を塗るカスタムラジオコントロール

色で塗りつぶすことができるサークルを設定したいと思っていますか?

["赤"、 "灰色"、 "黄色"、...]のような配列を持ち、次のコントロールでこれらの色をレンダリングします。そして、私が色のどれかを選ぶと、それは価値があるはずです。 「赤」を選択した場合と同様に、選択された「赤」の値が表示されます。

ありがとうございます。 enter image description here

+0

なぜ人々が投票しないのか分かりません。質問がうまくいかなかったり、編集が必要な場合は、彼らは示唆することができます。私はこれが有効な質問であり、解決策が必要だと思います。トピックがうまく説明できないことがあるかもしれません。私はそれを謝ります。しかし、これで私を助けてください。ありがとうございました。 –

+0

これがあなたの値[赤、灰色など]のルックアップとどのように違うか、またはカスタム表示を求めているかどうかはわかりません。本、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースをお薦めする、または見つけることを私たちに依頼すると、[オフラインのトピックは何ですか?](https://stackoverflow.com/help/on-topic)トピック ' –

+0

こんにちは@MorrisonChang、私は質問を編集しました。これが問題を明確にすることを願っています。 –

答えて

1

これは私がやったことですが、ラジオボタンのように動作しません。

まず

<color name="red">#d50000</color> 
<color name="green">#33691e</color> 
<color name="blue">#304ffe</color> 

が描画可能なフォルダ内にこのcircle.xml描画可能を追加した値/ colors.xmlファイルにしたい色を追加します。このドロアブルは、実行時にビューの背景として設定されます(カラーボタン)。あなたのレイアウトファイルで

<?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を設定します。ここで

は、私は今、あなたはのonclickリスナーとの色のボタンを追加するコードを追加する必要が

<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> 

を行っているものです。あなたの活動のクラス内

int selected_color; 

今すぐあなたのアクティビティクラスでこのメソッドを追加するカラーリソースが

int[] colors = {R.color.blue, R.color.red,R.color.green}; 

が選択したカラー値を格納するために別のint型の変数を追加します。値保持するint配列を追加これにより、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()メソッドからこのメソッドを呼び出します。

関連する問題