- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我要做的就是检查方向并根据它更改图像。问题是图像没有变化,toast 消息也没有起作用。不知道为什么..我在其他地方也有同样的代码。
Java:
public class Test extends AppCompatActivity {
private ArrayList<String> mNames = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
getText();
}
private void getText() {
mNames.add("Menu");
mNames.add("Definitions");
mNames.add("Steps");
mNames.add("Examples");
mNames.add("Related");
mNames.add("Videos");
initRecyclerView();
}
private void initRecyclerView() {
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(layoutManager);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, mNames);
recyclerView.setAdapter(adapter);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.activity_main);
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
ImageView layout = findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.background_l);
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setContentView(R.layout.activity_main);
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
ImageView layout = findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.background_p);
}
}
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY" />
<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/recyclerView"
android:paddingTop="5dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="15dp"
android:fontFamily="@font/open_sans_bold"
android:text="@string/definition"
android:textColor="@color/backgroundBlue"
android:textSize="20sp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView2"
android:layout_marginEnd="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:fontFamily="@font/open_sans"
android:text="@string/fiveSDef1"
android:textColor="@android:color/background_dark"
android:textSize="14sp" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView3"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:fontFamily="@font/open_sans_bold"
android:text="@string/uses"
android:textColor="@color/backgroundBlue"
android:textSize="20sp" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView4"
android:layout_marginEnd="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:fontFamily="@font/open_sans"
android:text="@string/fiveSDef2"
android:textColor="@android:color/background_dark"
android:textSize="14sp" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView5"
android:layout_marginEnd="20dp"
android:layout_marginStart="20dp"
android:layout_marginTop="15dp"
android:fontFamily="@font/open_sans"
android:text="@string/fiveSDef3"
android:textColor="@android:color/background_dark"
android:textSize="14sp" />
</RelativeLayout>
</ScrollView>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:background="@color/backgroundBlue"
android:fontFamily="@font/open_sans_bold"
android:text="@string/fiveS"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:textSize="29sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="0dp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@id/button2"
android:layout_marginTop="15dp"
android:orientation="horizontal" />
</RelativeLayout>
list :
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize|screenLayout">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ToolTables.1"></activity>
<activity android:name=".ToolTables.2"
android:windowSoftInputMode="adjustPan">
</activity>
<activity android:name=".ToolTables.3"></activity>
<activity android:name=".ToolTables.4"></activity>
<activity android:name=".ToolTables.5"></activity>
<activity
android:name=".Test"
android:configChanges="orientation|keyboardHidden|screenSize|screenLayout">
</activity>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>
编辑:我添加了其余代码。包括与 Java 耦合的 XML。它并不复杂,主要是文本字段和一个 recyclerView。
最佳答案
onConfigurationChanged() 回调只有在我们指定我们将在 Activity 标签内的 manifest.xml 上手动管理此更改时才会被调用:
android:configChanges="orientation|screenSize|keyboardHidden"
这表示当设备旋转时不会重新创建 Activity ,不推荐此行为,除非您有正当理由这样做,例如 youtube API 推荐此操作以避免重新创建和重新初始化YoutubePlayerFragment.
Caution: Handling the configuration change yourself can make it much more difficult to use alternative resources, because the system does not automatically apply them for you. This technique should be considered a last resort when you must avoid restarts due to a configuration change and is not recommended for most applications. https://developer.android.com/guide/topics/resources/runtime-changes
如果它不是必要的,只是你想在每个方向上有一个不同的图像,你可以:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
boolean isLandscape = this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
((ImageView)findViewById(R.id.background)).setImageResource(isLandscape ? R.drawable.background_l : R.drawable.background_p);
getText();
}
关于java - onConfigurationChanged 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51291050/
我的应用程序最初是显示商店标签,从服务中加载获取所有商店名称并适合自动完成后,然后向用户显示自动完成 block ,用户可以选择商店。一旦他选择了用户可见的商店登录 block 。 我的问题是用户选择
我试图通过将 android:configChanges="orientation|screenSize" 设置为我的 Activity 来停止由于设备方向更改而引起的 Activity 娱乐并通过覆
为什么当我在模拟器中切换方向 (ctrl+F11) 时,没有调用 onConfigurationChanged 覆盖方法。 public class HelloSample extends Activ
我正在使用以下代码在用户旋转设备时更改我的 Activity 方向。这第一次工作正常,但没有再次调用。请指正。 @Override public void onConfigurationCha
我有一个图像查看器应用程序,可以处理具有大量缓存的非常大的图像。当用户旋转设备时,如果应用程序完全重新启动,则会导致打嗝。 如果我禁用方向更改,则设备旋转是无缝的,但我有一个横向和纵向方向不同的侧边栏
我已经搜索了很长时间,但仍然没有运气。将代码更改为现在编辑的版本。已编辑在 onCreate 中以此开始应用程序: @Override protected void onCreate(Bund
如何在保持纵向模式布局的同时检测横向模式? 无论实际移动方向如何,我都有一个保持纵向模式的 Activity 。我可以通过将 android:screenOrientation="portrait"
这种行为在 Android GingerBread 中很受欢迎。我重写了 onConfigurationChanged() 以更新布局以更改设备的方向。(更新了 list 文件中的 android:c
我正在编写一个代码,当方向改变时改变 TextView 的文本我正在使用 onConfigurationChanged() 监听器来更改文本 override fun onConfigurationC
我试图重写方法 onConfigurationChanged 并且我收到错误: BaseActivity 类型的 onConfigurationChanged(Configuration) 方法必须覆
我在 try catch onConfigurationChanged 事件时遇到问题。这是场景: Activity A 开始(监听onConfigurationChanged) 手机旋转到横向模式(
我有一个处理配置更改的 Activity 。但现在我必须改变布局。我尝试在 onConfigurationChanged 回调中再次设置布局并希望获得正确的布局(土地)但它仍在显示纵向 View 的第
我的应用程序出现了奇怪的问题。我问 here 的主要问题。问题是 android:configChanges="keyboardHidden|orientation" 在我的代码中不起作用。 所以我找
我是一名年轻的 Android 开发者,我找不到解决我的问题的方法。 我想在配置更改后立即模拟一个事件,为此我尝试使用 onConfigurationChanged() 但使用此方法时,我的事件会在屏
有没有一种方法可以在不破坏整个 Activity 的情况下,将 ImageView 可绘制对象更改为横向模式的相应可绘制对象。我试图在 onConfigurationChanged 回调中再次设置可绘
屏幕旋转后,其中一个 View 对象的高度发生变化,我想知道以像素为单位的高度值。 onConfigurationChanged 方法可能在 View 完成旋转之前被调用。所以如果我在这个方法中测量
我必须在一个 fragment 的语言更改时刷新 fragment 内容。所以我想到了在我的主要 Activity 中使用 onConfigurationChange 方法(这个 Activity 控
所以我要做的就是检查方向并根据它更改图像。问题是图像没有变化,toast 消息也没有起作用。不知道为什么..我在其他地方也有同样的代码。 Java: public class Test extends
不再调用我的应用 onConfigurationChanged。我已将我的 SDK API 更新为 Lollipop,并将 SDK 级别 im AndroidManifest 设置如下: 我不知道我
我在 SO 上看到了一些相关问题,但我无法解决我的问题。我为纵向和横向模式创建了单独的布局。 我已经针对相应的方向更改修改了 AndroidManifest.xml 文件,但是当我在 Activity
我是一名优秀的程序员,十分优秀!