View v = new View(mContext); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(dp2px(mContext, 29.5f), dp2px(mContext, 31.5f)); v.setLayoutParams(params); v.setBackgroundResource(R.mipmap.manual_touch_point); v.setX((x - dp2px(mContext, 14.75f))); v.setY((y - dp2px(mContext, 15.75f))); frameLayout.addView(v); 为什么阿拉伯语时addView不显示
时间: 2024-01-27 07:06:25 浏览: 107
可能是因为阿拉伯语是从右向左的书写方向,导致你添加的 View 在屏幕的左侧看不到。你可以尝试将 View 的位置调整到屏幕的右侧,或者在添加 View 前将布局的方向设置为从左向右,即在 Activity 或 Application 的 onCreate() 方法中添加以下代码:
```
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
```
这样应该可以解决阿拉伯语下 addView 不显示的问题。
相关问题
mViewPager2.setAdapter(new PosterAdapter(getActivity(),getActivity().getSupportFragmentManager(),getContext(), imageBeanList)); mIndicators = new ImageView[imageBeanList.size()]; for (int i = 0; i < mIndicators.length; i++) { mIndicators[i] = new ImageView(getActivity().getApplicationContext()); mIndicators[i].setImageResource(i == 0 ? R.drawable.indicator_selected : R.drawable.indicator_unselected); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(23, 23); params.setMargins(10, 0, 10, 0); mIndicator.addView(mIndicators[i], params); }这个怎么修改
要将 `mViewPager2` 和 `mIndicators` 中的数据类型从 `ImageView` 和数组改为使用 `ImageBean` 类型的列表,需要进行以下修改:
1. 首先,需要在 `PosterAdapter` 中添加一个 `List<ImageBean>` 类型的变量 `mImageBeans`,用于存储海报图片的相关信息,并在构造方法中进行初始化。修改后的代码如下:
```java
public class PosterAdapter extends FragmentStateAdapter {
private Context mContext;
private List<ImageBean> mImageBeans;
public PosterAdapter(FragmentActivity fragmentActivity, List<ImageBean> imageBeans) {
super(fragmentActivity);
mContext = fragmentActivity.getApplicationContext();
mImageBeans = imageBeans;
}
// 省略其他代码...
}
```
2. 在 `PosterAdapter` 中的 `createFragment()` 方法中,使用 `ImageBean` 类型的数据来创建 `PosterFragment`。例如:
```java
@NonNull
@Override
public Fragment createFragment(int position) {
PosterFragment fragment = new PosterFragment();
Bundle args = new Bundle();
args.putString("image_url", mImageBeans.get(position).getImageUrl());
fragment.setArguments(args);
return fragment;
}
```
3. 在初始化指示器的代码中,需要将 `ImageView` 数组 `mIndicators` 改为 `List<ImageBean>` 类型,并更新相应的代码。例如:
```java
mIndicators = new ArrayList<>();
mIndicator.removeAllViews();
for (int i = 0; i < mImageBeans.size(); i++) {
ImageBean bean = mImageBeans.get(i);
ImageView indicator = new ImageView(getActivity().getApplicationContext());
indicator.setImageResource(i == 0 ? R.drawable.indicator_selected : R.drawable.indicator_unselected);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(23, 23);
params.setMargins(10, 0, 10, 0);
mIndicator.addView(indicator, params);
mIndicators.add(indicator);
}
```
4. 在更新指示器状态的方法中,也需要将 `ImageView` 数组 `mIndicators` 改为 `List<ImageBean>` 类型,并更新相应的代码。例如:
```java
private void updateIndicatorState(int position) {
for (int i = 0; i < mImageBeans.size(); i++) {
ImageBean bean = mImageBeans.get(i);
ImageView indicator = mIndicators.get(i);
indicator.setImageResource(i == position ? R.drawable.indicator_selected : R.drawable.indicator_unselected);
bean.setSelected(i == position);
}
}
```
这样,就可以将 `mViewPager2` 和 `mIndicators` 中的数据类型从 `ImageView` 和数组改为使用 `ImageBean` 类型的列表,并使用 `ImageBean` 类型的数据来管理指示器的状态。
mNewSimUnlockProgressDialog = new ProgressDialog(mContext); String msg = mContext.getString(R.string.kg_sim_unlock_progress_dialog_message); mNewSimUnlockProgressDialog.setMessage(msg); mNewSimUnlockProgressDialog.setIndeterminate(true); mNewSimUnlockProgressDialog.setCancelable(false); if (!(mContext instanceof Activity)) { mNewSimUnlockProgressDialog.getWindow().setType( WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); }这个dialog里面的if语句中的代码有什么作用
这段if语句中的代码用于设置ProgressDialog的窗口类型。如果当前的Context不是Activity,即当前的上下文环境不是一个活动(Activity),则通过设置ProgressDialog的窗口类型为WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG来使ProgressDialog能够显示在锁屏界面之上。这样可以保证用户在解锁SIM卡时,能够看到ProgressDialog的提示信息,而不会被锁屏界面覆盖。如果当前的Context是Activity,则无需设置窗口类型。
阅读全文