我在列表视图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