2016-02-28 56 views
2

我創建的動態複選框用下面的代碼:AppCompatCheckBox工作不低於API 21

XML:

   <LinearLayout 
        android:id="@+id/layout_checkbox" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical"> 


       </LinearLayout> 

的.java:

LinearLayout ll = (LinearLayout) findViewById(R.id.layout_checkbox); 

ll.removeAllViews(); 

for (int i = 0; i < 10; i++) { 

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 


    AppCompatCheckBox myCheckBox = new AppCompatCheckBox(getApplicationContext()); 
    myCheckBox.setText(i); 
    myCheckBox.setTextColor(Color.parseColor("#FFFFFF")); 
    myCheckBox.setHintTextColor(Color.parseColor("#FFFFFF")); 
    myCheckBox.setTextSize(12); 


    myCheckBox.setId(i); 


    ll.addView(myCheckBox, lp); 

} 
從上面的代碼

現在只有LOLLIPOP版本顯示與文本的複選框。而對於LOLLIPOP版本,它只顯示Text,但未顯示覆選框。

同樣的事情,工作的所有設備,如果我會把下面的代碼在XML文件:

 <android.support.v7.widget.AppCompatCheckBox 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Testing" 
        android:buttonTint="@color/colorAccent"/> 

,但我不能確定的複選框中的XML,我必須創建它動態。

即使setButtonTintList工作不低於LOLLIPOP

我怎麼能顯示出與AppCompatCheckBox下面LOLLIPOP版本的複選框?

回答

5

不要使用getApplicationContext(),爲Contextnew AppCompatCheckBox()你需要使用一個引用您的活動傳遞(擴展AppCompatActivity)範圍內爲它注入正確的AppCompatCheckBox造型。如果你在一個活動中創建了這個文件,那麼這將是new AppCompatCheckBox(this),如果你是在一個片段中創建這個文件,這將是new AppCompatCheckBox(getActivity())

這樣的代碼下面將對所有版本:

public class MainActivity extends AppCompatActivity { 

    @Override protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 
    for (int i = 0; i < 10; i++) { 
     LinearLayout.LayoutParams lp = 
      new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

     AppCompatCheckBox myCheckBox = new AppCompatCheckBox(this); 
     myCheckBox.setText("text"); 
     myCheckBox.setTextSize(12); 

     myCheckBox.setId(i); 

     layout.addView(myCheckBox, lp); 
    } 
    } 

} 
+0

謝謝。有用 。 :-) – deepak

2

這肯定會工作

<android.support.v7.widget.AppCompatCheckBox 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Testing" 
       app:buttonTint="@color/colorAccent"/> 
相關問題