タブのフラグメントのレイアウトをナビゲーションビューのアプリケーションバーの下部に合わせる必要があるアンドロイドアプリを実行しています。問題は、imageViewが(アンドロイド:layout_alignBottom = "@ id/appbar"ではなく)アプリケーションバーの上に表示され、adittionでScrollViewが機能しないことです。断片FastAccessFragmentに私は3つのタブでの作成、Android align bottomが正しく動作しない
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main_d"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/app_bar_main">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_fragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</RelativeLayout>
その後:content_mainレイアウトは次のコードを持っている
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
Fragment currFragment = null;
FragmentManager fragmentManager = getSupportFragmentManager();
if (id == R.id.nav_principal) {
currFragment = new FastAccessFragment();
} else if (id == R.id.nav_logout) {
editor.putBoolean("signedUp", false);
editor.apply();
Intent intent = new Intent(this, LoginActivity.class);
if (intent != null) {
this.finish();
startActivity(intent);
}
}
if (currFragment != null) {
fragmentManager
.beginTransaction()
.replace(R.id.content_main, currFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
}
setTitle(item.getTitle());
:
は、私は次のコードを持ってナビゲーションビューを持っていますここに表示される対応するタブ:
public class FastAccessFragment extends Fragment {
private ViewPager viewPager;
private AppBarLayout appBar;
View rootview;
TabLayout tabLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootview = inflater.inflate(R.layout.fast_access_fragment, container, false);
if (savedInstanceState == null) {
View parent = (View) container.getParent();
appBar = (AppBarLayout) parent.findViewById(R.id.appbar);
tabLayout = new TabLayout(getActivity());
tabLayout.setTabTextColors(Color.parseColor("#C0C0C0"), Color.parseColor("#FFFFFF"));
tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFA500"));
appBar.addView(tabLayout);
viewPager = (ViewPager) rootview.findViewById(R.id.pager_fragment);
Adapter adapter = new Adapter(getFragmentManager());
adapter.addFragment(new VoiceFragment(), "Voice");
adapter.addFragment(new ButtonsFragment(), "Buttons");
adapter.addFragment(new PicturesFragment(), "Pictures");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setIcon(R.drawable.microphone);
tabLayout.getTabAt(1).setIcon(R.drawable.hand_up);
tabLayout.getTabAt(2).setIcon(R.drawable.frame);
}
return rootview;
}
@Override
public void onDestroyView() {
super.onDestroyView();
appBar.removeView(tabLayout);
}
public class Adapter extends FragmentStatePagerAdapter {
private final List<Fragment> fragments = new ArrayList<>();
private final List<String> fragmentTitles = new ArrayList<>();
public Adapter(FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
public void addFragment(android.support.v4.app.Fragment fragment, String title) {
fragments.add(fragment);
fragmentTitles.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitles.get(position);
}
}
}
The But
public class ButtonsFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_buttons, container, false);
Button up = (Button) view.findViewById(R.id.up_button);
Button up_2 = (Button) view.findViewById(R.id.up_button_2);
Button up_3 = (Button) view.findViewById(R.id.up_button_3);
Button up_4 = (Button) view.findViewById(R.id.up_button_4);
Button up_5 = (Button) view.findViewById(R.id.up_button_5);
final ImageView im = (ImageView) view.findViewById(R.id.blind_image);
up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
im.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.blind0, null));
}
});
up_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
im.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.blind1, null));
}
});
up_3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
im.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.blind2, null));
}
});
up_4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
im.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.blind3, null));
}
});
up_5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
im.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.blind4, null));
}
});
return view;
}
}
そして最後に、私はレイアウトfragment_buttonsを持っScrollViewとalignBottomは動作しません:
:
<LinearLayout 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"
android:layout_alignBottom="@id/appbar"
tools:context="com.blindsiot.carlos.blindsiot.VoiceFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/blind_image"
android:layout_gravity="center"
android:src="@drawable/blind0" />
<Button
android:id="@+id/up_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/Widget.AppCompat.Button.Colored"
android:text="PRUEBA"/>
<Button
android:id="@+id/up_button_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/Widget.AppCompat.Button.Colored"
android:text="PRUEBA"/>
<Button
android:id="@+id/up_button_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/Widget.AppCompat.Button.Colored"
android:text="PRUEBA"/>
<Button
android:id="@+id/up_button_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/Widget.AppCompat.Button.Colored"
android:text="PRUEBA"/>
<Button
android:id="@+id/up_button_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/Widget.AppCompat.Button.Colored"
android:text="PRUEBA"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
はあなたがここに結果を見ることができるtonsFragmentは、次のコードを持っていますそして、期待される結果は、ボタンの同じレイアウト内のアプリケーションバーの上の画像ビューと、それらのすべてがスクロールビューで表示されることになります。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
アプリバーが含まれているapp_bar_mainレイアウトのコードは以下の通りである:
ポケットベルに対応し、それはFastAccessFragmentを膨張レイアウトは、このコードがある
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.blindsiot.carlos.blindsiot.MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<RelativeLayout
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
私はコードで質問を編集しています。コードの2番目のセクションと最後の2つのセクションでは、あなたがコメントしたものを見ることができます。 – user3748883
さて、 'AppBar'の下にある' RelativeLayout'は 'app:layout_behavior =" @ string/appbar_scrolling_view_behavior "'を持つ必要があります。 –
それはまさにそれでしたが、私はこの仕事の論理を理解していません。それを知る前にこの属性を知る方法? – user3748883