Tôi có hai hoạt động:chủ đề mờ không hoạt động khi thiết lập trình trên Android 2.3.3 hoặc 4.2
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view) {
Intent intent= new Intent(this, TranslucentActivity.class);
startActivity(intent);
}
}
public class TranslucentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
this.setTheme(android.R.style.Theme_Translucent);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_translucent);
}
}
Layout activity_main
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android1="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:onClick="click" />
</RelativeLayout>
Layout activity_translucent
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TranslucentActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Hello_world" />
</RelativeLayout>
Manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.translucencytest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.translucencytest.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.translucencytest.TranslucentActivity">
</activity>
</application>
</manifest>
Khi tôi nhấp vào nút trong MainActivity, nó bắt đầu TranslucentActivity với nền trong suốt. Tất cả đều tốt trong trình giả lập Android trên nền tảng 4.0.3 Nhưng trên các nền tảng khác, ví dụ: 2.3.3 hoặc 4.2, tôi có nền đen thay vì trong suốt. Điều gì có thể sai ?
P.S. Tôi không muốn sử dụng tệp kê khai để khai báo chủ đề cho các hoạt động.
Tôi vừa thử nghiệm chủ đề và nó hoạt động như được thiết kế trên các phiên bản Android khác nhau. Có rất nhiều thứ có thể sai với ví dụ của bạn. Chủ đề mờ sẽ hiển thị cửa sổ phía sau, vì vậy nếu cửa sổ đó có màu đen thì bạn sẽ không thấy độ trong suốt. Khi bạn không khai báo một chủ đề cho ứng dụng của bạn thì nó sẽ không minh bạch vì Android sử dụng một chủ đề mặc định trước khi bạn gọi setTheme và sau đó bạn sẽ thấy chủ đề mặc định thay vì màn hình chủ của bạn. Để có thể giúp bạn ít nhất nên đăng hai cách sử dụng bố trí trong ví dụ và biểu hiện cũng như –
@EmanuelMoecklin Tôi đã thêm bố cục và biểu hiện vào bài đăng của mình. Tôi nghi ngờ rằng chủ đề mặc định được hiển thị thay vì mờ, nhưng tại sao nó hoạt động trên 4.0.3 và không hoạt động trên 2.3.3 và 4.2? – Wytas
Bạn đang sử dụng @ style/AppTheme của riêng mình để bạn cũng phải đăng bài đó để tôi có thể kiểm tra ví dụ của bạn. Các phiên bản Android khác nhau sử dụng các chủ đề, kiểu và tài nguyên khác nhau cho cùng một yếu tố màn hình (chế độ xem). Nhà sản xuất cũng chủ đề thiết bị của họ để phân biệt chúng với các thiết bị cạnh tranh. Trong khi ví dụ: nền mặc định trên một thiết bị có thể có màu đen, có thể hơi trong suốt và có độ dốc trên thiết bị khác. Bạn không thể thực sự dựa vào "những thứ" để trông giống nhau trên mọi thiết bị trừ khi bạn chủ đề chúng cho mình. –