如何在Android中对齐PreferencesActivity?

Hes*_*eed 14 java android arabic android-preferences

PreferencesActivity需要它才能正确对齐,因为我想使用阿拉伯语,我试图使用它android: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>
Run Code Online (Sandbox Code Playgroud)

这就是我在内部使用XML的方式PreferencesActivity:

addPreferencesFromResource(R.layout.preferences);
Run Code Online (Sandbox Code Playgroud)

omi*_*d.n 12

花了一些时间搜索我们的共享问题后,我发现没有任何用处.obviosly android api不支持RTL优先权.这意味着不支持波斯语/希伯来语/阿拉伯语.但毕竟我试图找到一些方法来右对齐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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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


mat*_*784 8

不幸的是,基本偏好组件(PreferenceScreen,Preference等)以相当不可配置的方式实现.它们旨在以特定方式工作,并且不是非常可定制的.

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

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

(注2:根据我看到有关阿拉伯文字等问题,这是可能的.Android是足够聪明的尝试右默认对齐不过,我会感到惊讶,如果是这样的话不过,这是值得一试.)

对不起,我没有更好的答案.

  • 我已经测试了它,Android在某些方面足够智能(常规设置)如果我用阿拉伯语写它,它会正确对齐,但它们仍保持左对齐的偏好. (4认同)

Oma*_*san 5

在应用程序标签下的清单文件中添加此行,

安卓:supportsRtl =“真”