在不使用片段的情况下更改相同布局的屏幕

时间:2016-04-15 10:37:11

标签: android android-layout

我正在使用Android Studio进行开发。 我创建了一个屏幕,侧面有按钮,所以看起来像菜单栏。 我想让左侧(红色侧)布局可更改 - 意味着如果我点击右侧(绿色侧)的其中一个图像,左侧布局将更改为不同的布局并将打开不同的活动。 我已经使用右侧的可点击图像显示了我想要在左侧显示的活动及其布局。 我可以不使用碎片使其工作吗?

the "menu" i have and how i want it to work

布局是:



<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:background="@drawable/ightwall"
    android:id="@+id/drawerlayout"
    android:weightSum="1"
    >

    <ScrollView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:layout_weight=".7">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="My List"

                android:textAlignment="center"
                android:textSize="20dp"
                android:textStyle="bold" />

        </LinearLayout>

    </ScrollView>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#D5D4D4"
        android:layout_gravity="right"
        android:layout_weight=".3">

        <ImageView
            android:id="@+id/mylist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="3dp"
            android:src="@drawable/createlist_mylist"
            android:adjustViewBounds="true"
            android:maxHeight="100dp"
            android:maxWidth="100dp"
            android:layout_gravity="center" />

        <ImageView
            android:id="@+id/freeadd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="3dp"
            android:src="@drawable/createlist_freetext"
            android:adjustViewBounds="true"
            android:maxHeight="100dp"
            android:maxWidth="100dp"
            android:layout_gravity="center" />

        <ImageView
            android:id="@+id/categoryadd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="3dp"
            android:src="@drawable/createlist_categorysearch"
            android:adjustViewBounds="true"
            android:maxHeight="100dp"
            android:maxWidth="100dp"
            android:layout_gravity="center" />

        <ImageView
            android:id="@+id/favproductadd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="3dp"
            android:src="@drawable/createlist_favproduct"
            android:adjustViewBounds="true"
            android:maxHeight="100dp"
            android:maxWidth="100dp"
            android:layout_gravity="center" />



    </LinearLayout>
</LinearLayout>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:0)

您可以使用替换片段

OnClickListener中的

 FragmentManager manager = getSupportFragmentManager();
    manager.beginTransaction()
            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
            .replace(R.id.content_main, new TargetFragment())
            .commit();

并在

更改yourxml
 <ScrollView
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_gravity="left"
    android:layout_weight=".7">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="My List"

            android:textAlignment="center"
            android:textSize="20dp"
            android:textStyle="bold" />

    </LinearLayout>

</ScrollView>

 <ScrollView
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_gravity="left"
    android:layout_weight=".7">

  <FrameLayout
      android:id="@+id/content_main"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

  </FrameLayout>

</ScrollView>

创建类TargetFragment.class

 import android.support.v4.app.Fragment;
 public class TargetFragment extends Fragment {
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.target_fragment_xml, container, false);

 // Enter code here
 return root;
 }

答案 1 :(得分:0)

更好更简单的方法是使用碎片。但是,如果您不想使用片段,那么您可以将活动的所有视图放在某个单独的相对或线性布局中,无论您喜欢哪个并使用隐藏显示视图每次点击。

答案 2 :(得分:0)

The easy way is to use fragments. Fragments are designed to be reusable UI layouts. But if you don't want to use fragments, you can create CustomView and use addView, removeView like example:

LinearLayout layout=new LinearLayout(context);
layout.addView(new  Button(context));
layout.addView(new ImageButton(context));

TextView view = new TextView(context);
view.setText("Hello World");
layout.addView(view); 

layout.removeView(view);