2017-07-29 147 views
0

如何設置以編程方式創建的複選框的文本在左側而不是在複選框的右側對齊。以下是代碼片段:Android:以編程方式在右側設置複選框設置文本位置

Checkbox check1 = new Checkbox(getApplicationContext()); 
check1.setLayoutParams(new ActionBar.LayoutParams(LinearLayoutCompat.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
check1.setId(fieldNo); 
check1.setTextColor(Color.BLACK); 
check1.setGravity(Gravity.RIGHT); 
check1.setText(formField.get(fieldNo)); 

上述代碼導致顯示在複選框右側的文本。

下面是截圖:enter image description here

我怎麼能上的複選框左邊的文字嗎?

+1

'check1.setGravity(Gravity.LEFT)'試試這個 –

+0

嘗試,但沒有工作。 – max

回答

1

您需要更改以下

check1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 

在這一行,你用動作條PARAMS,然後LinearLayoutCompat PARAMS。嘗試堅持1類,並在自定義視圖像複選框只是LinearLayout會做。

更新1:

您應該使用CheckedTextView。我已經使用了標準的android drawable,但您也可以使用您的自定義Check複選框設計。

所以,你的整個代碼看起來像 -

final CheckedTextView check1 = new CheckedTextView(getApplicationContext()); 
    check1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    check1.setId(fieldNo); 
    check1.setCheckMarkDrawable(android.R.drawable.checkbox_off_background); 
    check1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (check1.isChecked()){ 
       check1.setChecked(false); 
       check1.setCheckMarkDrawable(android.R.drawable.checkbox_off_background); 
      }else{ 
       check1.setChecked(true); 
       check1.setCheckMarkDrawable(android.R.drawable.checkbox_on_background); 
      } 
     } 
    }); 
    check1.setTextColor(Color.BLACK); 
    check1.setGravity(Gravity.LEFT); 
    check1.setText(formField.get(fieldNo)); 
+0

試過了,但沒有工作。 – max

+0

我只是做了,它對我很好。你如何將這個複選框添加到你的父視圖? –

+0

對不起,我錯誤地解釋了你的問題。我以爲你想要它就像截圖一樣。 –

0

您可以通過將複選框的文本設置爲空或空來實現此目的,並且只需在其左側添加一個TextView即可。我明白這不是你要找的解決方案,而坦率地說,我自己對此並不滿意。但如果你不顧一切地解決你的問題,它會奏效。 您可以將OnClickListener添加到TextView以獲得更好的UX。否則,在TextView上點擊不會選中CheckBox。

相關問題