Полупрозрачное текстовое поле над фотографией - PullRequest
0 голосов
/ 20 февраля 2011

Я пытаюсь наложить полупрозрачное текстовое поле поверх фотографии для описания.Нажатие на экран должно заставить его скользить вверх / вниз.Он также должен содержать строку рейтинга внизу.

Как в Google Goggles http://blogote.com/wp-content/uploads/2010/10/GoogleGoggles1.jpg

Как бы вы это сделали?Это то, что я до сих пор:

<FrameLayout 
    android:id="@+id/mainlayout" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:foregroundGravity="bottom"
    xmlns:android="http://schemas.android.com/apk/res/android">

<ImageView
    android:id="@+id/imgview" 
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
<TextView 

    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:text="@string/hello"/>
</FrameLayout>

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Это может быть легко реализовано с помощью виджета RelativeLayout и SlidingDrawer.

  1. RelativeLayout требуется, чтобы вы могли прикрепить ящик к нижней части макета и иметьон открывается поверх фотографии.
  2. Виджет SlidingDrawer имеет 2 обязательных свойства: android:handle и android:content.Для чистых макетов вы, вероятно, захотите использовать их как отдельные файлы макетов.Для простоты в приведенном ниже примере они включены в одну и ту же компоновку XML.
  3. Непрозрачность фона проста - просто передайте свойство android:background как значение ARGB (Alpha RGB).Ниже используется "# BF000000", который является черным с непрозрачностью примерно 75%.
  4. Ваш последний шаг - скрыть дескриптор и добавить обработчик событий в ImageView и SlidingDrawer.

Просто для удовольствия, вот полный рабочий пример ...

Ваш макет XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                >
<ImageView android:id="@+id/image" 
           android:src="@drawable/bunnywaffles"
           android:layout_width="fill_parent" 
           android:layout_height="fill_parent"
           android:layout_alignParentTop="true"
           />
<SlidingDrawer android:id="@+id/SlidingDrawer" 
               android:handle="@+id/slideHandleButton" 
               android:content="@+id/contentLayout"
               android:layout_width="fill_parent"
               android:layout_height="150dip"
               android:layout_alignParentBottom="true" >
    <Button android:id="@+id/slideHandleButton"
            android:layout_width="0dip" 
            android:layout_height="0dip"
            android:visibility="gone"
            />
    <LinearLayout android:id="@+id/contentLayout"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"  
                  android:orientation="vertical" 
                  android:gravity="center" 
                  android:background="#BF000000">
        <LinearLayout android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      android:gravity="center">
            <Button android:id="@+id/Button01" 
                    android:layout_width="wrap_content" 
                    android:layout_height="wrap_content" 
                    android:text="Button1" 
                    />
            <Button android:id="@+id/Button02" 
                    android:layout_width="wrap_content" 
                    android:layout_height="wrap_content" 
                    android:text="Button2" 
                    />
        </LinearLayout>
        <RatingBar android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:numStars="5" />
    </LinearLayout>
</SlidingDrawer>
</RelativeLayout>

И ваша деятельность Java:

ImageView _image;
SlidingDrawer _drawer;
Boolean _drawerOpen = false;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    _image = (ImageView) findViewById( R.id.image );
    _image.setOnClickListener(ToggleDrawer);

    _drawer = (SlidingDrawer) findViewById( R.id.SlidingDrawer );
    _drawer.setOnClickListener(ToggleDrawer);
}

private View.OnClickListener ToggleDrawer = new View.OnClickListener() {
    public void onClick(View view) {
        if ( _drawerOpen )
            _drawer.animateClose();
        else
            _drawer.animateOpen();
        _drawerOpen = !_drawerOpen;
    }
};
1 голос
/ 13 апреля 2012

Эта ссылка дает представление о создании прозрачного цвета фона. Вот это #BF000000.

...