1. 程式人生 > >Android 動態生成 radiobutton 解決 radiogroup 多行顯示的問題 單選

Android 動態生成 radiobutton 解決 radiogroup 多行顯示的問題 單選

專案有需求,然後看了下網上的方法,好多都太麻煩了,而且也不怎麼靠譜。。


先上效果圖


先上佈局的程式碼

  <RadioGroup
                android:id="@+id/radio_group_directory_filter_game"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:weightSum="3"
                android:layout_below="@id/text_title_game"/>

然後是java程式碼
 public void setGameRadioButton(RadioGroup gameRadioGroup){
        Gson gson = new Gson();
        List<Group> allGroups = new ArrayList<>();
        allGroups.add(new Group("Dota2","Dota2"));
        allGroups.add(new Group("LOL","LOL"));
        allGroups.add(new Group("守望先鋒","守望先鋒"));
        allGroups.add(new Group("王者榮耀","王者榮耀"));
        float density = getResources().getDisplayMetrics().density;
        RadioGroup.LayoutParams radioParams = new RadioGroup.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f);
        int radioMargin = (int) (4 * density);
        radioParams.setMargins(0, radioMargin, 16, radioMargin);
        int i = 0;
        while (i < allGroups.size()) {
            int j = 0;
            LinearLayout ll = new LinearLayout(getActivity());
            ll.setOrientation(LinearLayout.HORIZONTAL);
            ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            ll.setWeightSum(3.0f);
            while (j < 3 && i < allGroups.size()) {
                ll.addView(getGameGroupRadio(allGroups.get(i),i), radioParams);
                i++;
                j++;
            }
            gameRadioGroup.addView(ll);
        }

    }
 private RadioButton getGameGroupRadio(Group group,int position) {
        RadioButton btn = (RadioButton) getActivity().getLayoutInflater().inflate(R.layout.radio_directory_sidebar, null);
        btn.setText(group.getName());
        switch (position){
            case 0:
                DOTA2_ID = btn;
                break;
            case 1:
                LOL_ID = btn;
                break;
            case 2:
                OVERWATCH_ID = btn;
                break;
            case 3:
                KINGGLORY_ID = btn;
                break;
        }
        btn.setOnClickListener(new View.OnClickListener() {//單獨給每個生成的radiobutton生成點選事件,我是通過position來分辨不同radiobutto的,原因是,我通過對radiogroup再來監聽radiobutton失敗了,反正監聽沒反應,所以只能這麼幹了
            @Override
            public void onClick(View view) {
                for (int i = 0; i < mRadioGame.getChildCount(); i++) {
                LinearLayout row = (LinearLayout) mRadioGame.getChildAt(i);
                for (int j = 0; j < row.getChildCount(); j++) {
                    RadioButton radio = (RadioButton) row.getChildAt(j);
                    radio.setChecked(false);
                }
            }
            switch (position){
                case 0:
                    DOTA2_ID.setChecked(true);
                    mDirectoryOption.setGameId(Game.DOTA2_ID);
                    break;
                case 1:
                    LOL_ID.setChecked(true);
                    mDirectoryOption.setGameId(Game.LOL_ID);
                    break;
                case 2:
                    OVERWATCH_ID.setChecked(true);
                    mDirectoryOption.setGameId(Game.OVERWATCH_ID);
                    break;
                case 3:
                    KINGGLORY_ID.setChecked(true);
                    mDirectoryOption.setGameId(Game.KING_GLORY_ID);
                    break;
            }
                updateBar();
            }
        });
        return btn;
    }


相關推薦

Android 動態生成 radiobutton 解決 radiogroup 顯示的問題

專案有需求,然後看了下網上的方法,好多都太麻煩了,而且也不怎麼靠譜。。先上效果圖 先上佈局的程式碼 <RadioGroup android:id="@+i

Android 動態生成佈局 (層巢狀)

前段時間學習了android,瞭解到android主要是使用xml佈局檔案進行佈局的,但是對於一些動態的介面,就需要使用程式碼動態生成佈局。 Android 除了可以載入xml檔案,顯示佈局外,也可以程式碼生成佈局,並通過setContentView(View view)

解決TextView滑動與NestedScrollView等,滑動沖突,我的解決方案

rip max 解決 底部 e-mail ast sts end 謝謝 1.首先要明白,什麽時候回TextView處理滑動,什麽時候不處理滑動 1.1往上滑動,到達文本底部就不要再處理了,如果往上滑動不在底部則繼續TextView滑動 1.2往下滑動,到達文本頂部就不要再處

Android動態生成按鈕樣式

Android GradientDrawable ColorStateList 動態設置樣式 動態生成按鈕樣式 使用: int borderColor = Color.parseColor("#2E3135"); int bgColor = Color.parseColor("

Android 自繪TextView解決提前換問題,支援圖文混排

先看下效果圖: 上面是MTextView,下面是預設的TextView。 一、原因 用最簡單的全英文句子為例,如果有一個很長的單詞,這一行剩餘的空間顯示不下了,那麼規則就是不打斷單詞,而是把整個單詞丟到下一行開始顯示。這樣本來沒有錯。一是咱們中國人都是方塊字,怎麼都放

Android動態生成ImageView用Glide和設定setTag()報錯不執行問題

一個坑,imageView.setTag和Glide載入圖片時,一定要把Glide放在前面,不然imageView.setTag就會報錯丟擲異常,筆記留存 ImageView imageView =

解決EditText編輯時在ScrollView中無法滾動的問題

這是一件很鬱悶的事,一個傻x給我找事,說我做的應用不好用,以為自己是傻逼產品經理嗎?管的事真不少。各種問題,各種向老大反應,連伺服器的端的問題都來找我,以為我是救世主啊,吐槽完了轉入正題。

解決TextView滑動與NestedScrollView等,滑動衝突,我的解決方案

1.首先要明白,什麼時候回TextView處理滑動,什麼時候不處理滑動 1.1往上滑動,到達文字底部就不要再處理了,如果往上滑動不在底部則繼續TextView滑動 1.2往下滑動,到達文字頂部就不要再處理了,如果往下滑動不在頂部則繼續TextView滑動 關鍵計算地方:   

嘗試解決Java字串的編輯問題

很多時候,我們都需要在程式碼中書寫大段或者需要轉義的字串,常見的情形有: SQL, 正則表示式, XML/HTML, 引用一大段文字 等等.       不幸的是, 到目前為止, Java都沒有

ScrollView與ListView合用(TextView顯示時計算不正確)的問題解決

最近測試的時候發現在使用SrollView 中使用兩個listView,如果使用特大字型的話,比較長的LISTVIEW多行顯示會有問題。在網上搜索了一下,大概有兩種解決方案,一種是重寫ListView的onMeasure方法,一種是重寫TextView的onMeasure方

關於Dagger2 android 動態生成Fragment的問題

其實動態建立Fragment的流程並不複雜。 1. 網路獲取Fragment的個數。 2. 通過Component建立Fragment。 主要的問題在於: 1. 我想使用全域性AppComponent 中的ApiService等物件 2. 我的BaseF

android EditText顯示並且支援imeOptions設定

android EditText 單行顯示並且設定imeOptions很簡單,條件是在xml中將singleLine設定為true, 將inputType設定為text,多行顯示預設是不能設定,預設是回車鍵,在網上查了好久,發現一個解決方法,記錄一下: XML

Android 動態設定RadioButton選中和沒選中的顏色及設定預設選中某一項

關於RadioButton動態設定背景顏色和字型顏色,踩過好多坑,接下來我總結一下遇到的所有問題及解決方案,供大家參考下,希望對大家有幫助。 1.首先,我們先來寫radiobutton選中和未選中的背景顏色的xml檔案。 在drawable資料夾下新建一

筆記——android EditText顯示並且支援imeOptions

最近用到EditText的imeOptions的屬性,然後條件是在xml中將singleLine設定成true,或者將inputType設定成text,多行顯示預設是不支援imeOptions的屬性,最後在網上查到了下面的方法(原文連結)。即 xml an

你可能不知道的 Android Studio 小技巧之「編輯」

Android Studio 大家應該都很熟悉了,但是可能很多人都僅限基本的功能使用,而 Android Studio 非常強大,有很多非常實用卻又鮮為人知的小技巧,熟練掌握這些小技巧將能極大的提高你的工作效率,今天就來給大家介紹一個很實用的小技巧「多行編輯」。

css 設置文本顯示再隱藏

play hidden web 文本 line type tex width over <!DOCTYPE html><html> <head>   <meta charset="UTF-8">   <title&g

SoapUI中 code 顯示設置

ngs adding 們的 git ces auto AS The strong 你們的SoapUI 有設置下面的選項嗎? 1. Before adding your project, we recommend that you enable the follo

oracle 如何將一個字段內容拆分顯示

eve 內容 fun regex sel 字符 小寫 位置 odi 例子: select regexp_substr(‘1,2,3,4,5‘, ‘[^,]+‘, 1, level)from dualconnect by level <= regexp_count(‘1

Tkinter Label 文字的顯示

在 Tk004 中,使用 width 和 heigth 來指定控制元件的大小,如果指定的大小無法滿足文字的要求 是,會出現什麼現象呢?如下程式碼: Label(root,text = 'welcome to jcodeer.cublog.cn',width = 10,height = 3).pa

帶圖片上傳的,記錄提交

效果圖   前臺頁面程式碼: <form target="form" id="myform" action="<%=basePath%>wxorder/submit" method="post" enctype="multipart/form-dat