我明确地为我的LinearLayout的背景定义了一种黑色(在我的
XML中使用@android:color / black),但有时(通常在屏幕旋转后),黑色变成灰色(或透明的黑色) ).
@H_301_2@此问题出现在许多设备上:模拟器,Acer Liquid(Android 2.2)和Galaxy Nexus(Android 4.1).
@H_301_2@截图:Buggy view // Not buggy view
@H_301_2@这是我的XML和活动代码:
@H_301_2@XML:
@H_301_2@活动:
- <?xml version="1.0" encoding="utf-8"?>
- <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="150dp"
- android:minHeight="150dp">
- <ImageView
- android:id="@+id/projectview_description_image"
- android:layout_width="match_parent"
- android:layout_height="150dp"
- android:contentDescription="@string/projectview_description_image_description"
- android:scaleType="centerCrop"
- android:src="@drawable/project_nophoto" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:orientation="vertical"
- android:id="@+id/projectview_description_overlay"
- android:paddingTop="5dp"
- android:paddingLeft="10dp"
- android:paddingBottom="5dp"
- android:background="@android:color/black"
- android:height="35dp">
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/projectview_description_title"
- android:textAllCaps="true"
- android:textColor="@android:color/white"
- android:textSize="20dp"
- android:textStyle="bold"/>
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/projectview_description_baseline"
- android:textColor="@android:color/white"
- android:textStyle="italic" />
- </LinearLayout>
- </RelativeLayout>
- <!-- This LinearLayout background is buggy -->
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="40dp"
- android:orientation="horizontal"
- android:background="@android:color/black">
- <ImageView
- android:layout_width="175dp"
- android:layout_height="25dp"
- android:layout_gravity="center_vertical"
- android:paddingLeft="10dp"
- android:paddingRight="10dp"
- android:scaleType="fitCenter"
- android:src="@drawable/project_status_finish" />
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:gravity="right"
- android:paddingRight="10dp"
- android:text="@string/projectview_description_website"
- android:textColor="@color/website_link"
- android:textSize="15dp"
- android:id="@+id/projectview_description_website" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:id="@+id/projectview_description_about_container"
- android:padding="10dp"
- android:paddingBottom="0dp">
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/projectview_description_about"
- android:textAllCaps="true"
- android:textStyle="bold" />
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/projectview_description_about_text" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:id="@+id/projectview_description_questions_container" />
- </LinearLayout>
- </ScrollView>
@H_301_2@感谢帮助!
- public class ProjectViewActivity extends Activity implements OnClickListener {
- private boolean displayMenu = false;
- private Intent shareIntent;
- private Favoritesqlite db;
- private I4pProjectTranslation project;
- @TargetApi(14)
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- if(displayMenu) {
- // Inflate menu only if it hasn't been done before
- if(menu.size() == 0) {
- // Inflating the menu
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.projectview,menu);
- // Creating share intent
- Intent prepareShareIntent = new Intent(Intent.ACTION_SEND);
- prepareShareIntent.putExtra(Intent.EXTRA_TEXT,UriHelper.getProjectUrl(project));
- prepareShareIntent.putExtra(Intent.EXTRA_SUBJECT,project.getTitle());
- prepareShareIntent.setType("text/plain");
- shareIntent = Intent.createChooser(prepareShareIntent,getResources().getText(R.string.projectview_menu_share_dialog));
- }
- // Defining favorite state
- MenuItem favoriteItem = menu.getItem(0);
- if(db.isFavorite(project))
- favoriteItem.setTitle(R.string.projectview_menu_favorites_remove);
- else
- favoriteItem.setTitle(R.string.projectview_menu_favorites_add);
- }
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch(item.getItemId()) {
- case android.R.id.home:
- if(getIntent().getData() != null) {
- Intent intent = new Intent(this,HomepageActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- } else
- finish();
- break;
- case R.id.projectview_favorite:
- Toast t;
- if(db.isFavorite(project)) {
- db.removeFavorite(project);
- t = Toast.makeText(this,getResources().getString(R.string.projectview_toast_favorites_remove,project.getTitle()),Toast.LENGTH_SHORT);
- } else {
- db.addFavorite(project);
- t = Toast.makeText(this,getResources().getString(R.string.projectview_toast_favorites_add,Toast.LENGTH_SHORT);
- }
- t.show();
- break;
- case R.id.projectview_share:
- startActivity(shareIntent);
- break;
- }
- return super.onOptionsItemSelected(item);
- }
- @TargetApi(11)
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if(Build.VERSION.SDK_INT < 11)
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.loading);
- db = new Favoritesqlite(this);
- if(Build.VERSION.SDK_INT >= 11)
- getActionBar().setDisplayHomeAsUpEnabled(true);
- project = (I4pProjectTranslation) getLastNonConfigurationInstance();
- if(project != null)
- displayProject();
- else {
- String projectLang;
- String projectSlug;
- Uri data = getIntent().getData();
- if(data != null) {
- List<String> path = data.getPathSegments();
- projectLang = path.get(0);
- projectSlug = path.get(2);
- } else {
- Bundle extras = getIntent().getExtras();
- if(extras.containsKey("project_title"))
- setTitle(extras.getString("project_title"));
- projectLang = extras.getString("project_lang");
- projectSlug = extras.getString("project_slug");
- }
- ProjectViewHandler handler = new ProjectViewHandler(this);
- ProjectViewThread thread = new ProjectViewThread(handler,projectLang,projectSlug);
- thread.start();
- }
- }
- @Override
- public Object onRetainNonConfigurationInstance() {
- return project;
- }
- public void setProject(I4pProjectTranslation p) {
- project = p;
- }
- @TargetApi(11)
- public void displayProject() {
- setContentView(R.layout.projectview_description);
- displayMenu = true;
- if(Build.VERSION.SDK_INT >= 11)
- invalidateOptionsMenu(); // Rebuild the menu
- setTitle(project.getTitle());
- LinearLayout overlay = (LinearLayout) findViewById(R.id.projectview_description_overlay);
- overlay.getBackground().setAlpha(127);
- if(project.getProject().getPictures().size() > 0) {
- ImageView image = (ImageView) findViewById(R.id.projectview_description_image);
- image.setImageBitmap(project.getProject().getPictures().get(0).getImageBitmap());
- }
- TextView title = (TextView) findViewById(R.id.projectview_description_title);
- title.setText(project.getTitle());
- TextView baseline = (TextView) findViewById(R.id.projectview_description_baseline);
- baseline.setText(project.getBaseline());
- TextView website = (TextView) findViewById(R.id.projectview_description_website);
- if("".equals(project.getProject().getWebsite()))
- website.setVisibility(View.GONE);
- else
- website.setOnClickListener(this);
- if("".equals(project.getAboutSection())) {
- LinearLayout aboutContainer = (LinearLayout) findViewById(R.id.projectview_description_about_container);
- aboutContainer.setVisibility(View.GONE);
- } else {
- TextView aboutText = (TextView) findViewById(R.id.projectview_description_about_text);
- aboutText.setText(project.getAboutSection());
- }
- LinearLayout questions = (LinearLayout) findViewById(R.id.projectview_description_questions_container);
- for(Question question : project.getProject().getQuestions()) {
- if(question.getAnswer() != null) {
- LinearLayout questionLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.projectview_question,null);
- TextView questionView = (TextView) questionLayout.findViewById(R.id.projectview_question_question);
- TextView answerView = (TextView) questionLayout.findViewById(R.id.projectview_question_answer);
- questionView.setText(question.getQuestion());
- answerView.setText(question.getAnswer().trim());
- questions.addView(questionLayout);
- }
- }
- }
- public void onClick(View arg0) {
- Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(project.getProject().getWebsite()));
- startActivity(intent);
- }
- }