Есть ли у Android концепция MasterPage, как .NET или Tiles в Struts, чтобы добавить заголовок на все страницы? - PullRequest
2 голосов
/ 19 января 2012

Я занимаюсь разработкой приложения для Android.В этом приложении панель логотипа отображается на всех страницах (Действия), или мы можем сказать, что она имеет заголовок на всех страницах.Эта панель логотипа имеет несколько значков, таких как «Домой», «Логин», «Уведомления» и т. Д., И при нажатии на эти значки будет выполнена соответствующая навигация.

например, если пользователь находится где-либо в приложении и щелкает по значку домашней страницы, он перейдет на домашнюю страницу приложения.

Я могу накачать logobar.XML в своей Все активности с помощьюкодирование.но проблема в том, что я должен вызывать onClickListener на всех страницах для всех значков в панели логотипов.Это не очень хороший способ программирования.Как я могу внедрить Logo Bar Activity во все остальные действия без повторения кода?Есть ли у Android концепция главной страницы, как в .Net или концепция плиток, как в Struts?

Пожалуйста, ведите меня.

Ответы [ 5 ]

1 голос
/ 28 мая 2013

Решение было довольно простым.

Вам необходимо расширить класс " Activity " в функции onCreate SetContentView для вашего основного XML-макета, а также переопределить setContentView в базовом классе Activity

Например:

1.Создайте «base_layout.xml» с кодом ниже

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical"
      android:background="#000000"
      android:padding="15dp" >
    <LinearLayout android:orientation="horizontal" android:background="#000000"
           android:layout_width="fill_parent" android:layout_height="wrap_content"
           android:minHeight="50dp" android:paddingLeft="10dp">
           <ImageView android:layout_width="wrap_content" android:id="@+id/ImageView01"
               android:adjustViewBounds="true" android:layout_height="wrap_content"
               android:scaleType="fitCenter" android:maxHeight="50dp" />
   </LinearLayout>
   <LinearLayout android:id="@+id/linBase"
     android:layout_width="fill_parent"
       android:layout_height="fill_parent" >
   </LinearLayout>
</LinearLayout>    

2.Создайте «BaseActivity.java»

public class BaseActivity extends Activity {
    ImageView image;
    LinearLayout linBase;     
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        super.setContentView(R.layout.base_layout);        
        image = (ImageView)findViewById(R.id.ImageView01);
        image.setImageResource(R.drawable.header);
        linBase = (LinearLayout)findViewById(R.id.linBase);
    }
    @Override
    public void setContentView(int id) {
        LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(id, linBase);
    }
}

и

public class SomeActivity extends BaseActivity {    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.some_layout);
       //rest of code
    }
}

Единственное, что я заметил до сих пор, это то, что при запросе индикатора выполнения (requestWindowFeature (Window.FEATURE_INDETERMINATE_PROGRESS)) это необходимо сделать перед вызовом super.onCreate.Я думаю, это потому, что перед вызовом этой функции еще ничего нельзя нарисовать.

Это прекрасно сработало для меня, и, надеюсь, вы найдете это полезным в своем собственном кодировании.

1 голос
/ 19 января 2012

вы должны создать свой masterLayout в xml и включить его в другой макеты, в которых он должен быть.

1 голос
/ 19 января 2012

Редактировать: хорошо, я понял. может быть этот ответ поможет вам.

Попробуйте использовать виджет Tab с Tabacctivity, проверьте эту ссылку для использования фрагмента и вкладку http://developer.android.com/reference/android/app/TabActivity.html для Android Я думаю, что для более низких версий также мы можем использовать это. Вот что говорит ссылка: «Вы можете использовать библиотеку поддержки v4, которая предоставляет версию API Fragment, которая совместима вплоть до DONUT».

0 голосов
/ 27 февраля 2013

Я сделал это, используя файл XML.

Я просто создаю представление времени выполнения из файла XML и добавляю его в макет Activity.

Я создал метод для этого

public static void setLoginview(Context ctx, RelativeLayout layout) {
    LayoutInflater linflater = (LayoutInflater) ctx
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View myView = linflater.inflate(R.layout.loginheader, null);    
    layout.addView(myView);
    try {
        layout.getChildAt(0).setPadding(0, 50, 0, 0);
    } catch (Exception e) {
    }
}

ctx - это контекст приложения, а layout - это макет, в который я хочу добавить это представление.

0 голосов
/ 19 января 2012

Есть что-то подобное, но доступно только на API 11+ (3.2 и Android 4.0.x Ice Cream Sandwich).Это называется actionbar (http://developer.android.com/reference/android/app/ActionBar.html).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...