我在列表視圖formate中顯示sting列表,我使用了默認列表視圖並使用simple_list_item_single_choice
放置了一個單選按鈕。但是這顯示右側的單選按鈕,我想在左側顯示單選按鈕。是任何可能的使用默認列表視圖顯示左側的單選按鈕列表視圖中的單選按鈕
6
A
回答
6
simple_list_item_single_choice.xml
使用CheckedTextView
類
這裏是simple_list_item_single_choice.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
您需要爲您的需要自定義XML和使用CheckBox
來實現你的目標 這裏是你的custom.xml
<CheckBox
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:button="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
只需在代碼中使用custom.xml
代替simple_list_item_single_choice.xml
即可。
希望它可以幫助你。
0
這是不可能的,默認情況下單選按鈕在右側。如果你想要它在左邊,那麼你應該從SDK中獲取simple_list_item_single_choice.xml佈局的源代碼並進行適當的更改,然後使用此自定義佈局而不是默認佈局。
0
simple_list_item_single_choice使用CheckedTextView類。
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
CheckedTextView類是android.widget包。
下面這個類的來源。
/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.widget;
import com.android.internal.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.ViewDebug;
import android.view.accessibility.AccessibilityEvent;
/**
* An extension to TextView that supports the {@link android.widget.Checkable} interface.
* This is useful when used in a {@link android.widget.ListView ListView} where the it's
* {@link android.widget.ListView#setChoiceMode(int) setChoiceMode} has been set to
* something other than {@link android.widget.ListView#CHOICE_MODE_NONE CHOICE_MODE_NONE}.
*
*/
public class CheckedTextView extends TextView implements Checkable {
private boolean mChecked;
private int mCheckMarkResource;
private Drawable mCheckMarkDrawable;
private int mBasePaddingRight;
private int mCheckMarkWidth;
private static final int[] CHECKED_STATE_SET = {
R.attr.state_checked
};
public CheckedTextView(Context context) {
this(context, null);
}
public CheckedTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CheckedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.CheckedTextView, defStyle, 0);
Drawable d = a.getDrawable(R.styleable.CheckedTextView_checkMark);
if (d != null) {
setCheckMarkDrawable(d);
}
boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false);
setChecked(checked);
a.recycle();
}
public void toggle() {
setChecked(!mChecked);
}
@ViewDebug.ExportedProperty
public boolean isChecked() {
return mChecked;
}
/**
* <p>Changes the checked state of this text view.</p>
*
* @param checked true to check the text, false to uncheck it
*/
public void setChecked(boolean checked) {
if (mChecked != checked) {
mChecked = checked;
refreshDrawableState();
}
}
/**
* Set the checkmark to a given Drawable, identified by its resourece id. This will be drawn
* when {@link #isChecked()} is true.
*
* @param resid The Drawable to use for the checkmark.
*/
public void setCheckMarkDrawable(int resid) {
if (resid != 0 && resid == mCheckMarkResource) {
return;
}
mCheckMarkResource = resid;
Drawable d = null;
if (mCheckMarkResource != 0) {
d = getResources().getDrawable(mCheckMarkResource);
}
setCheckMarkDrawable(d);
}
/**
* Set the checkmark to a given Drawable. This will be drawn when {@link #isChecked()} is true.
*
* @param d The Drawable to use for the checkmark.
*/
public void setCheckMarkDrawable(Drawable d) {
if (mCheckMarkDrawable != null) {
mCheckMarkDrawable.setCallback(null);
unscheduleDrawable(mCheckMarkDrawable);
}
if (d != null) {
d.setCallback(this);
d.setVisible(getVisibility() == VISIBLE, false);
d.setState(CHECKED_STATE_SET);
setMinHeight(d.getIntrinsicHeight());
mCheckMarkWidth = d.getIntrinsicWidth();
mPaddingRight = mCheckMarkWidth + mBasePaddingRight;
d.setState(getDrawableState());
} else {
mPaddingRight = mBasePaddingRight;
}
mCheckMarkDrawable = d;
requestLayout();
}
@Override
public void setPadding(int left, int top, int right, int bottom) {
super.setPadding(left, top, right, bottom);
mBasePaddingRight = mPaddingRight;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final Drawable checkMarkDrawable = mCheckMarkDrawable;
if (checkMarkDrawable != null) {
final int verticalGravity = getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
final int height = checkMarkDrawable.getIntrinsicHeight();
int y = 0;
switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - height;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - height)/2;
break;
}
int right = getWidth();
checkMarkDrawable.setBounds(
right - mCheckMarkWidth - mBasePaddingRight,
y,
right - mBasePaddingRight,
y + height);
checkMarkDrawable.draw(canvas);
}
}
@Override
protected int[] onCreateDrawableState(int extraSpace) {
final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
if (isChecked()) {
mergeDrawableStates(drawableState, CHECKED_STATE_SET);
}
return drawableState;
}
@Override
protected void drawableStateChanged() {
super.drawableStateChanged();
if (mCheckMarkDrawable != null) {
int[] myDrawableState = getDrawableState();
// Set the state of the Drawable
mCheckMarkDrawable.setState(myDrawableState);
invalidate();
}
}
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
boolean populated = super.dispatchPopulateAccessibilityEvent(event);
if (!populated) {
event.setChecked(mChecked);
}
return populated;
}
}
您是onDraw有修改。和simple_list_item_single_choice.xml修改。
ex。
相關問題
- 1. 單選按鈕不在列表視圖
- 2. 表視圖中的單選按鈕
- 3. 只從列表視圖中選擇一個單選按鈕
- 4. 在列表視圖中選擇多個單選按鈕
- 5. Android - 列表視圖與單選單選按鈕
- 6. 單選按鈕中的單選按鈕行格柵視圖
- 7. Android:定製列表視圖中的單選按鈕
- 8. 如何禁用列表視圖中的單選按鈕
- 9. 單擊列表視圖中的按鈕而不單擊列表視圖(WINRT/Metro)
- 10. 單選按鈕沒有被選中,而在列表視圖中選擇單選按鈕
- 11. 如何在列表視圖中檢查單選按鈕?
- 12. 如何在Expandable列表視圖中實現單選按鈕
- 13. Yii列表視圖更新單選按鈕選擇
- 14. Xpages視圖中的單選按鈕
- 15. Android中的圖像vs視圖(按鈕,單選按鈕....)
- 16. 如何使用帶文本視圖列表的單選按鈕
- 17. 如何處理列表視圖上的單選按鈕值
- 18. 單選按鈕上的分區域列表視圖
- 19. javaFX:與單選按鈕的列表視圖
- 20. 從列表視圖控件中的單選按鈕中刪除「選擇」
- 21. Android - 按鈕列表視圖
- 22. WPF - 按鈕列表視圖
- 23. 按鈕列表視圖
- 24. 列表視圖與按鈕
- 25. 按鈕列表視圖
- 26. Zend2:單選按鈕列表?
- 27. 單選按鈕列表
- 28. ASP.Net單選按鈕列表
- 29. javascript單選按鈕列表
- 30. 在單選按鈕列表中動態添加子列表視圖項目
謝謝Tanmay,它的工作,我把單選按鈕放在左邊,但我面臨的問題是單選按鈕和列表視圖中的文本都合併在一起。我想分開單選按鈕和字符串在列表視圖中。這是可能的嗎..? – RAAAAM 2011-04-25 08:26:30
Opps ... !!發生這種情況是由於'android:paddingLeft =「6dip」'..請刪除它,並請讓我知道結果。 – 2011-04-25 08:40:26
是啊,你很棒。我接受你的答案,它的工作很好。但是,現在,列表視圖onclick監聽器將無法正常工作......爲什麼會發生這種情況..? – RAAAAM 2011-04-25 08:58:09