- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我创建了 android preference activity 来像这样更改字体
android 首选项 Activity 正常工作,但我想在 ListPreference
中显示字体预览
像这样 font changing
public class SettingsActivity extends AppCompatPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
}
/**
* Set up the {@link android.app.ActionBar}, if the API is available.
*/
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
// Show the Up button in the action bar.
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
if (!super.onMenuItemSelected(featureId, item)) {
NavUtils.navigateUpFromSameTask(this);
}
return true;
}
return super.onMenuItemSelected(featureId, item);
}
/**
* {@inheritDoc}
*/
@Override
public boolean onIsMultiPane() {
return isXLargeTablet(this);
}
/**
* Helper method to determine if the device has an extra-large screen. For
* example, 10" tablets are extra-large.
*/
private static boolean isXLargeTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
}
/**
* {@inheritDoc}
*/
@Override
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.pref_headers, target);
}
/**
* A preference value change listener that updates the preference's summary
* to reflect its new value.
*/
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener =
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
}
}
};
private static void bindPreferenceSummaryToValue(Preference preference) {
// Set the listener to watch for value changes.
preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
............................;
}
/**
* This method stops fragment injection in malicious applications.
* Make sure to deny any unknown fragments here.
*/
protected boolean isValidFragment(String fragmentName) {
return PreferenceFragment.class.getName().equals(fragmentName)
|| fontPreferenceFragment.class.getName().equals(fragmentName);
}
// Font PreferenceFragment
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class fontPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_font);
setHasOptionsMenu(true);
bindPreferenceSummaryToValue(findPreference("font"));
bindPreferenceSummaryToValue(findPreference("fontsizes"));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
startActivity(new Intent(getActivity(), SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
}
和 R.xml.pref_font
是
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:defaultValue="1"
android:entries="@array/pref_font_list_titles"
android:entryValues="@array/pref_font_list_titles_values"
android:key="font"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="@string/pref_font_title_header"/>
<ListPreference
android:defaultValue="1"
android:entries="@array/pref_font_size_titles"
android:entryValues="@array/pref_font_size_titles_values"
android:key="fontsizes"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="Font size"
/>
最佳答案
经过长时间的搜索,我弄清楚了该怎么做
在设置页面XML文件中
<com.........ArabicFontNameListPreference
android:defaultValue="1"
android:entries="@array/pref_font_list_titles_ar"
android:entryValues="@array/pref_font_list_titles_values_ar"
android:key="font_ar"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="@string/pref_font_title_ar"
android:summary="@string/pref_font_title_ar_summary">
</com.........ArabicFontNameListPreference>
和 ArabicFontNameListPreference.java
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Typeface;
import android.preference.ListPreference;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
/**
* Created by Basil on 04-03-2016.
*/
public class ArabicFontNameListPreference extends ListPreference {
private int mClickedDialogEntryIndex;
public ArabicFontNameListPreference(Context context) {
super(context);
}
public ArabicFontNameListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
if (getEntries() == null || getEntryValues() == null) {
super.onPrepareDialogBuilder(builder);
return;
}
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getContext(), R.layout.preference_ar_font_name, getEntries()) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
float fontSizePx = getContext().getResources().getDimension(R.dimen.def_font_size_list_pref);
Typeface tf = null;
CheckedTextView view = (CheckedTextView) convertView;
if (view == null) {
view = (CheckedTextView) View.inflate(getContext(), R.layout.preference_ar_font_name, null);
}
switch (position) {
case 0:
// fontSizePx = getContext().getResources().getDimension(R.dimen.font_size_small_small);
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/RobotoRegular.ttf");
break;
case 1:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/RobotoRegular.ttf");
// fontSizePx = getContext().getResources().getDimension(R.dimen.font_size_medium_medium);
break;
// case 2:
// tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/MADDINA.ttf");
//// fontSizePx = getContext().getResources().getDimension(R.dimen.font_size_small_medium);
// break;
// case 3:
// tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/trado.ttf");
// break;
// case 4:
// tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/ScheherazadeRegOT.ttf");
// break;
// case 5:
// tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/Symbols1_Ver02 (1).otf");
// break;
// case 6:
// tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/UthmanTN1 Ver10.otf");
// break;
default:
}
view.setText(getEntries()[position]);
view.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSizePx);
view.setTypeface(tf, Typeface.BOLD);
return view;
}
};
mClickedDialogEntryIndex = findIndexOfValue(getValue());
builder.setSingleChoiceItems(adapter, mClickedDialogEntryIndex, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mClickedDialogEntryIndex = which;
ArabicFontNameListPreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
dialog.dismiss();
}
});
builder.setPositiveButton(null, null);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult && mClickedDialogEntryIndex >= 0 && getEntryValues() != null) {
String val = getEntryValues()[mClickedDialogEntryIndex].toString();
if (callChangeListener(val)) {
setValue(val);
}
}
}
}
和 preference_ar_font_name.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/listPreferredItemHeightSmall"
android:height="48dp"
android:checkMark="@null"
android:drawableLeft="?android:attr/listChoiceIndicatorSingle"
android:drawableStart="?android:attr/listChoiceIndicatorSingle"
android:gravity="center_vertical"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
关于Android首选项 Activity 字体预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34736780/
有没有办法获取其他网站页面的屏幕截图? 例如:您在输入中引入一个网址,按 Enter 键,然后脚本会为您提供所输入网站的屏幕截图。我设法使用 headless 浏览器来完成此操作,但我担心这可能会占用
我如何在 UICollectionView 中添加下一个单元格的预览,当当前单元格被滑动时显示?这样感觉就像一堆卡片。我从 Chrome 的 iOS 应用程序及其标签切换器的实现中汲取了很多灵感。任何
HTML javascript 编程新手,我的页面实现有问题。我创建了多页 HTML 表单布局(使用 div),它运行 4 个页面,大约有 140 个输入值(大多数是可选值)。我需要在实际提交之前实现
我正在尝试让 Qt5 QFileDialog 在选择图像打开时显示图像预览。 方法一:扩展QFileDialog 我用了this implementation of the dialog它适用于 Qt
我是 TFS 的新手,并尝试通过托管的 TFS (tfspreview.com) 进行我的第一次自动构建,但由于缺少程序集而失败。 我在解决方案中的一个项目引用了 Microsoft.WindowsA
我正在使用 SwiftUI 并编写了以下示例来展示我遇到的问题。当我添加多个按钮或多个文本时,它会创建两个单独的预览,但是当我在设备上运行应用程序时,它们会同时加载。附上一张照片: 我清理了我的构建文
我无法将代码覆盖率提高到最低。 90% 因为 XCode 考虑了 PreviewProvider。 我该怎么办?删除所有 SwiftUI 预览?或者有没有一种方法可以排除一些带有“PreviewPro
首先,请注意我搜索了一个 SocialMediaStackExchange 来问这个问题,但似乎没有。 这就是我想知道的。向 twitter 发布推文时,如果它是 youtube 链接或特定网站的
我正在使用谷歌地图 API 自动完成来获取搜索的机构的城市和国家/地区。为此,我有一个输入字段和搜索位置的 map 预览。这是 jsfiddle,但它目前不起作用(https://jsfiddle.n
在 OpenCart 商店中提供音频预览的最佳方法和播放器是什么?这将涉及上传完整轨道,然后提取要播放的部分 最佳答案 m3psplt是迄今为止您最好的选择。 有时安装起来有点冒险(特别是在 Cent
如果我运行: 127.0.0.1:8000/document/1/preview 此 pdf 文件已下载。 我需要在 HTML 中显示它(带有打印功能的预览)。怎么做? views.py from x
我在预览 Wagtail 页面时遇到错误,但在发布和实时查看时一切正常。我的设置是这样的: from django.db import models from modelcluster.fields
我是一个新手,我一直在尝试在 docker 上安装 Mattermost(slack 替代方案)的预览版来尝试一下。我一直遵循官方指南。 拱门 Install Docker using the fol
如果我运行: 127.0.0.1:8000/document/1/preview 此 pdf 文件已下载。 我需要在 HTML 中显示它(带有打印功能的预览)。怎么做? views.py from x
我在预览 Wagtail 页面时遇到错误,但在发布和实时查看时一切正常。我的设置是这样的: from django.db import models from modelcluster.fields
VS 调试器给我: _Color = "{Name=ff000040, ARGB=(255, 0, 0, 64)}" 我怎样才能“看到”什么颜色? 我尝试了一个 html 页面: ________
我想显示来自 ImageField 的图像。我正在使用 Django crispy forms 。似乎我需要使用 HTML 布局助手,但我不确定如何在此处访问模板变量。 以下呈现一个空白图像标签: H
The following classes could not be instantiated: androidx.fragment.app.FragmentContainerView (Open C
我正在从事一个涉及数据集之间连接的项目,我们需要允许预览任意数据集之间的任意连接。这很疯狂,但这就是它有趣的原因。这是使用面向所以给定一个连接我想快速显示 ~10 行结果。 我一直在围绕不同的方法进行
我正在尝试上传图像并在用户提交之前进行预览,但由于某种原因我无法更改 div 或图像的宽度或高度,并且它会以正常尺寸进行预览。我什至将它设置为 1px x 1px,但它仍然不起作用。 $(functi
我是一名优秀的程序员,十分优秀!