如何右对齐首选项 Android 中的活动?

2022-09-03 17:09:28

我有我需要它正确对齐,因为我想使用阿拉伯语,我试图使用它,但它不起作用。PreferencesActivityandroid:layout_gravity="right"PreferenceScreen

这是我的XML:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:layout_gravity="right">
        <PreferenceCategory android:title="General Settings">
                <CheckBoxPreference
                        android:title="Full Screen"
                        android:defaultValue="false"
                        android:summary="Always view as Full Screen"
                        android:key="fullScreenPref" />
        <Preference
                android:title="Report Bugs"
                android:summary="Notify us for any Bugs or Errors"
                android:key="bugs"/>
        <Preference
                android:title="About"
                android:summary="Version 1.0.0"
                android:key="about"/>
        </PreferenceCategory>
</PreferenceScreen>

这就是我在里面使用XML的方式:PreferencesActivity

addPreferencesFromResource(R.layout.preferences);

答案 1

在花了一些时间搜索我们共同的问题之后,我没有发现任何有用的东西。obviosly android api 不支持 RTL prefefrences。这意味着不支持波斯语/希伯来语/阿拉伯语。但毕竟我试图找到一些方法来正确对齐editText。我驱动了EditTextPreference类,并再次实现了onCreateView方法。这是我的代码:

/**
 * Created by omid on 1/12/14.
 */
public class RtlTextPreference extends EditTextPreference {


    public RtlTextPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected View onCreateView(ViewGroup parent) {
        View view = super.onCreateView(parent);

        RelativeLayout layout = (RelativeLayout) ((LinearLayout) view).getChildAt(1);
        layout.setGravity(Gravity.RIGHT);
        return view;
    }
}

标准Android api中的其余首选项应该是相同的(顺便说一句,我还没有尝试过)。也许有一天我们应该在android首选项中完全实现rtl支持并将其托管在github上。希望此代码片段对您有所帮助。


答案 2

不幸的是,基本的首选项组件(首选项屏幕首选项等)以相当不可配置的方式实现。它们被设计为以特定的方式工作,并且不是非常可定制的。

为了做你想做的事,你可能必须实现你自己的PreferencesScreen版本(或者可能只是你正在使用的Preferences类型,如CheckBoxPreference)。它的设计方式是,当它膨胀XML布局时,它会承担很多关于它们的事情并为您处理它(文本大小,填充,布局,包装等)。如果您希望它看起来像默认值,那就太好了,但是如果您需要调整这些配置,则不是那么好。

(注意:如果您不想实现首选项屏幕,则可以只使用列表视图并将其视为首选项页面。但是,无论哪种方式,您基本上都必须实现自己的首选项版本。

(注意2:根据我看到的关于阿拉伯语文本的其他问题,Android可能足够聪明,可以尝试默认右对齐它。但是,如果是这样的话,我会感到惊讶。不过,它值得一试。

对不起,我没有更好的答案给你。


推荐