โดยค่าเริ่มต้นหุ่นยนต์ช่องทำเครื่องหมายแสดงข้อความทางด้านขวาและช่องทำเครื่องหมายที่ด้านซ้าย
ฉันต้องการที่จะแสดงช่องทำเครื่องหมายที่ด้านขวาด้วยข้อความทางด้านซ้าย
ฉันจะทำสิ่งนี้ได้อย่างไร
โดยค่าเริ่มต้นหุ่นยนต์ช่องทำเครื่องหมายแสดงข้อความทางด้านขวาและช่องทำเครื่องหมายที่ด้านซ้าย
ฉันต้องการที่จะแสดงช่องทำเครื่องหมายที่ด้านขวาด้วยข้อความทางด้านซ้าย
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ฉันไม่สามารถนึกถึงการจัดแต่งทรงผมได้ แต่คุณสามารถตั้งค่าข้อความของช่องทำเครื่องหมายเป็นอะไรก็ได้และวาง TextView ทางด้านซ้ายของช่องทำเครื่องหมายด้วยข้อความที่คุณต้องการ
ฉันคิดว่ามันสายเกินไปที่จะตอบคำถามนี้ แต่จริงๆแล้วมันมีวิธีที่จะบรรลุเป้าหมายของคุณ คุณเพียงแค่เพิ่มบรรทัดต่อไปนี้ในช่องทำเครื่องหมายของคุณ:
android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
คุณสามารถใช้ drawable ที่กำหนดเองของคุณสำหรับช่องทำเครื่องหมายเช่นกัน
และสำหรับ radioButton:
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
และถ้าคุณต้องการที่จะทำโดยทางโปรแกรม:
กำหนดเค้าโครงและตั้งชื่อ RightCheckBox และคัดลอกบรรทัดต่อไปนี้:
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:text="hello"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"/>
และเมื่อคุณต้องการเพิ่มมันโดยทางโปรแกรมคุณเพียงแค่ขยายมันไปที่กล่องกาเครื่องหมายและเพิ่มเข้าไปในมุมมองราก
CheckBox cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null);
rootView.addView(cb);
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
และสำหรับช่องทำเครื่องหมายคุณสามารถใช้ ฉันคิดว่านี่เป็นทางออกที่ดีที่สุดสำหรับช่องทำเครื่องหมายด้านขวาที่ฉันพบ
android:drawableEnd
นอกจากandroid:drawableRight
(ด้วยค่าเดียวกัน)
คุณทำได้
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right|center"//or "center_vertical" for center text
android:layoutDirection="rtl"
android:text="hello" />
บรรทัดต่อไปนี้ก็เพียงพอแล้ว
android:layoutDirection="rtl"
android:gravity="end|center_vertical"
ให้แสดงข้อความทางซ้ายเนื่องจากเลย์เอาต์เริ่มต้นที่นี่
คุณสามารถเพิ่มได้android:layoutDirection="rtl"
แต่สามารถใช้ได้กับ API 17 เท่านั้น
เพียงแค่คัดลอกสิ่งนี้:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your text:"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
/>
</LinearLayout>
มีความสุข codding! :)
ข้อความช่องทำเครื่องหมายอาจไม่สอดคล้องกับซ้าย
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
ในอุปกรณ์บางอย่าง สามารถใช้CheckedTextViewแทนเพื่อหลีกเลี่ยงปัญหา
<CheckedTextView
...
android:checkMark="@android:drawable/btn_radio" />
และลิงค์นี้จะมีประโยชน์: จัดข้อความชิดซ้ายช่องทำเครื่องหมายขวา
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/checkBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layoutDirection="rtl"
android:text="text" />`
ตามที่แนะนำโดย @The Berga คุณสามารถเพิ่มได้android:layoutDirection="rtl"
แต่ใช้ได้เฉพาะกับ API 17
สำหรับการใช้งานแบบไดนามิกเท่านั้น
chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
คุณสามารถใช้ checkedTextView แทน
http://developer.android.com/reference/android/widget/CheckedTextView.html
ยิ่งไปกว่านั้นจาก imput Hazhir สำหรับปัญหานี้เป็นสิ่งจำเป็นฉีดที่คุณสมบัติในกล่องกาเครื่องหมายการกำหนดค่า xml android: paddingLeft = "0dp" นี้มีไว้สำหรับหลีกเลี่ยงพื้นที่ว่างที่ด้านซ้ายช่องทำเครื่องหมาย
การเพิ่มคำตอบอื่นให้กับคำถามนี้ที่ใช้ CheckedTextView หากใครก็ตามที่พยายามจะทำแบบโปรแกรม นอกจากนี้ยังมีตัวเลือกในการใช้ภาพที่กำหนดเองสำหรับช่องทำเครื่องหมาย และสามารถทำได้ในมุมมองเดียว
final CheckedTextView checkBox = new CheckedTextView(getApplicationContext());
checkBox.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
checkBox.setId(1);
checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (checkBox.isChecked()){
checkBox.setChecked(false);
checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background);
}else{
checkBox.setChecked(true);
checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_on_background);
}
}
});
checkBox.setTextColor(Color.BLACK);
checkBox.setGravity(Gravity.LEFT);
checkBox.setText("hi");
จาก XML หากคุณต้องการเริ่มต้น -
<CheckedTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkMark="@android:drawable/checkbox_off_background"
android:checked="false"
android:text="Hi from xml"/>
ลิงค์ต่อไปนี้แสดงให้เห็นถึงวิธีการแสดงวัตถุมุมมอง Android มาตรฐานตลอดกาลด้วยช่องทำเครื่องหมายเคลื่อนไหวทางด้านขวาโดยการตั้งค่า drawable ที่เหมาะสม
ตั้งค่าพื้นหลังเพื่อให้ได้เอฟเฟกต์ระลอกคลื่น
[ลิงก์ไปยังเว็บไซต์พร้อมช่องทำเครื่องหมายตัวอย่างด้านขวาและซ้าย] [1] http://landenlabs.com/android/uicomponents/uicomponents.html#checkbox
<Button
android:id="@+id/p2Button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/transparent_ripple"
android:drawableRight="@drawable/checkline"
android:gravity="left|center_vertical"
android:text="Button"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<android.support.v7.widget.AppCompatButton
android:id="@+id/p2Button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/transparent_ripple"
android:drawableRight="@drawable/checkline"
android:gravity="left|center_vertical"
android:text="AppCompatButton"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<TextView
android:id="@+id/p2TextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/transparent_ripple"
android:drawableRight="@drawable/checkline"
android:gravity="left|center_vertical"
android:hapticFeedbackEnabled="true"
android:text="TextView"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/p2TextView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/transparent_ripple"
android:drawableRight="@drawable/checkline"
android:gravity="left|center_vertical"
android:hapticFeedbackEnabled="true"
android:text="AppCompatTextView"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/white" />
<CheckBox
android:id="@+id/p2Checkbox1"
android:layout_width="match_parent"
android:layout_height="@dimen/buttonHeight"
android:background="@drawable/transparent_ripple"
android:button="@null"
android:checked="true"
android:drawableRight="@drawable/checkline"
android:gravity="left|center_vertical"
android:text="CheckBox"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/p2Checkbox2"
android:layout_width="match_parent"
android:layout_height="@dimen/buttonHeight"
android:background="@drawable/transparent_ripple"
android:button="@null"
android:checked="true"
android:drawableRight="@drawable/checkline"
android:gravity="left|center_vertical"
android:text="AppCompatCheckBox"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<android.support.v7.widget.AppCompatCheckedTextView
android:id="@+id/p2Checkbox3"
android:layout_width="match_parent"
android:layout_height="@dimen/buttonHeight"
android:background="@drawable/transparent_ripple"
android:checkMark="@drawable/checkline"
android:checked="true"
android:gravity="left|center_vertical"
android:text="AppCompatCheckedTextView"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<!-- android:checkMark="?android:attr/listChoiceIndicatorMultiple" -->
<CheckedTextView
android:id="@+id/p2Checkbox4"
android:layout_width="match_parent"
android:layout_height="@dimen/buttonHeight"
android:background="@drawable/transparent_ripple"
android:checkMark="@drawable/checkline"
android:checked="true"
android:gravity="left|center_vertical"
android:text="CheckedTextView"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<CheckBox
android:id="@+id/p2Checkbox5"
android:layout_width="match_parent"
android:layout_height="@dimen/buttonHeight"
android:background="@drawable/transparent_ripple"
android:checked="true"
android:gravity="center_vertical|end"
android:text="CheckBox"
android:textColor="@android:color/white"
android:textSize="@dimen/buttonTextSize" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/white" />
<ToggleButton
android:id="@+id/p2ToggleButton1"
android:layout_width="match_parent"
android:layout_height="@dimen/buttonHeight"
android:background="@drawable/transparent_ripple"
android:checked="true"
android:drawableRight="@drawable/checkline"
android:gravity="center_vertical|left"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:textOff="ToggleButtonOff"
android:textOn="ToggleButtonOn"
android:textSize="@dimen/buttonTextSize" />
<ToggleButton
android:id="@+id/p2ToggleButton2"
android:layout_width="match_parent"
android:layout_height="@dimen/buttonHeight"
android:background="@drawable/transparent_ripple"
android:checked="true"
android:drawableRight="@drawable/btn_check_material_anim"
android:gravity="center_vertical|left"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:textOff="ToggleBtnnAnimOff"
android:textOn="ToggleBtnnAnimOn"
android:textSize="@dimen/buttonTextSize" />
ตัวอย่าง checkline.xml (ในรูปวาดได้โปรดดูลิงค์สำหรับเวอร์ชันภาพเคลื่อนไหวใน drawable-v21)
ตัวอย่าง transparent_ripple.xml (ใน drawable-v21)
<!-- Limit ripple to view object, can also use shape such as oval -->
<item android:id="@android:id/mask" android:drawable="@android:color/white" />
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:enterFadeDuration="200"
android:exitFadeDuration="200">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#80c0c000" />
</shape>
</item>
</selector>
</item>
ตัวอย่าง transparent_ripple.xml (ในรูปวาดได้เน้นเฉพาะไม่มีระลอก
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#80c0c000" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
หากไม่จำเป็นต้องใช้CheckBox
คุณก็สามารถใช้Switch
แทนได้ สวิตช์แสดงข้อความทางด้านซ้ายเป็นค่าเริ่มต้น
คุณสามารถใช้สิ่งนี้ได้เช่นกัน
<CheckBox
android:layout_width="match_parent"
android:layout_height="@dimen/button_height_35"
android:text="@string/english"
android:checked="true"
android:paddingEnd="@dimen/padding_5"
android:paddingStart="@dimen/padding_5"
android:layoutDirection="rtl"
android:drawablePadding="@dimen/padding_5"
android:drawableEnd="@drawable/ic_english"
style="@style/TextStyleSemiBold"
android:textSize="@dimen/text_15"
android:button="@drawable/language_selector"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/location_permissions"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@android:color/black" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:id="@+id/location_permission_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="8dp"
android:onClick="onLocationPermissionClicked" />
</RelativeLayout>
</LinearLayout>