2017-03-25 20 views
0

私は私の質問を理解しやすいものに変更しました。しかし今、別の問題がありました。なぜ表示されませんFloatingActionButtonFloatingActionButtonが表示されないのはなぜですか?

はなぜ表示されませんFloatingActionButton はなぜあなたのクラスはMyAppCompatクラスを拡張FloatingActionButton


public class Home extends MyAppCompact 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); //This is problem 
    } 

} 

//

public class MyAppCompact extends AppCompatActivity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     LinearLayout.LayoutParams layoutParams=new LinearLayout. 
       LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     FloatingActionButton floatingActionButton=new FloatingActionButton(this); 
     layoutParams.gravity= Gravity.BOTTOM|Gravity.RIGHT; 
     layoutParams.setMargins(16,16,16,16); 

     floatingActionButton.setLayoutParams(layoutParams); 
     floatingActionButton.setImageResource(R.drawable.ic_mic_white_24dp); 
     floatingActionButton.setClickable(true); 

     floatingActionButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       Bitmap bitmap=getScreenShot(); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
       byte[] byteArray = stream.toByteArray(); 

       Intent intent = new Intent(MyAppCompact.this, FeedBack.class); 
       intent.putExtra("bitmapData", byteArray); 
       startActivity(intent); 
      } 
     }); 

     LinearLayout.LayoutParams layoutParams1=new LinearLayout. 
       LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT 
     ); 

     addContentView(floatingActionButton,layoutParams1); 

     // 
//   <android.support.design.widget.FloatingActionButton 
//  android:layout_width="wrap_content" 
//  android:layout_height="wrap_content" 
//  android:layout_gravity="bottom|right" 
//  android:layout_margin="16dp" 
//  android:id="@+id/btnFloating" 
//  android:clickable="true" 
//  android:src="@drawable/ic_mic_white_24dp" /> 
    } 

    public Bitmap getScreenShot() { 
     View rootView = getWindow().getDecorView().findViewById(android.R.id.content); 
     View screenView = rootView.getRootView(); 
     screenView.setDrawingCacheEnabled(true); 
     Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache()); 
     screenView.setDrawingCacheEnabled(false); 
     return bitmap; 
    } 
} 
+0

私はあるビューが別のビューを閉じていることを理解しています。そして、私は1を2にする必要があります – AndroLord

答えて

0

を表示されません。 FloatingActionButtonを作成し、addContentViewメソッドを使用してFABを追加します。あなたのホームクラスは、このMyAppCompatクラスを継承しています。 onCreateメソッドでは、FABを追加するスーパーファーストを呼び出します。しかし、setContentViewと呼んで、以前に追加されたFABを置き換える新しいレイアウトを設定します。可能な修正は、まずレイアウトを追加してからFABを追加することです。しかし、最初にonCreateをAppCompatActivityから呼び出す必要があります。そのため、クラスにaddFABという新しいメソッドを作成し、ここにFABのコードを入れてください。 あなたのHomeクラスで何かをしましょう

public class Home extends MyAppCompact 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 
     addFAB(); 
    } 
} 
+0

あなたはそれを信じませんが、私はすでにそれを自分で推測しました。 このようなアプローチでは、各アクティビティにこれらのメソッドも追加する必要があるだけです... – AndroLord

+0

addContentViewをメインアクティビティのレイアウトにも使用してみましたか?その後、FABは置き換えられません。しかし、私はZオーダーについては分かりません。 –

+0

はい、試しました。それはすべて最初のアクティビティのコード数に依存します – AndroLord

関連する問題