Ответы пользователя по тегу XML
  • Как убрать отступы между ImageButton?

    a13xsus
    @a13xsus
    Lazy developer
    Поставь каждому ImageButton android:layout_height="match_parent" вместо wrap_content.
    Ответ написан
  • Как поднять элементы?

    a13xsus
    @a13xsus
    Lazy developer
    Неплохо было бы переделать это в relativelayout. Ну а чтобы все элементы (и кнопка) поднимались над софт-клавиатурой, нужно в манифест соответствующей активити добавить android:windowSoftInputMode="adjustResize":

    <activity android:name=".MyActivity"
        android:windowSoftInputMode="adjustResize">
    </activity>


    Но тогда картинка-бекграунд у layout тоже будет сжиматься. Этого можно избежать, если задавать фон в onCreate самой активити, и убрать его из xml:

    getWindow().setBackgroundDrawableResource(R.drawable.bg);


    Сам ImageView тогда можно оставить сверху как есть, тогда он в принципе будет на месте. Правда тогда нужно будет тестить для разных экранов и ориентаций, могут быть косяки. На скорую руку я набросал так (довольно кривая разметка, но для примера сойдет):

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:local="http://schemas.android.com/apk/res-auto"
        android:id="@+id/rel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
    
        android:orientation="vertical"
        android:isScrollContainer="false">
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="160dp"
            android:src="@drawable/firebase_lockup_400"/>
    
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="55dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentStart="true"
            android:background="@color/colorPrimary"
            android:text="Log In"
            android:textAllCaps="false"
            android:textColor="#FFFFFF"
            android:textSize="17sp"/>
    
        <android.support.design.widget.TextInputLayout
            android:id="@+id/text2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@id/button1">
    
            <EditText
                android:id="@+id/password_input"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:inputType="textPassword"
                android:textColorHint="@android:color/white"
                android:textCursorDrawable="@drawable/star"/>
        </android.support.design.widget.TextInputLayout>
    
        <android.support.design.widget.TextInputLayout
            android:id="@+id/text1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@id/text2">
    
            <EditText
                android:id="@+id/email_input"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Enter email"
                android:inputType="textEmailAddress"
                android:textColor="@android:color/white"
                android:textCursorDrawable="@drawable/star"/>
        </android.support.design.widget.TextInputLayout>
    
    </RelativeLayout>


    Выглядит примерно так:

    3501ba9764a8429dbadd6533a5b521b0.png
    Ответ написан
  • Адаптивность верстки на андроид?

    a13xsus
    @a13xsus
    Lazy developer
    Неясно, зачем использовать настолько большие значения для отступов, но если уж нужно, тогда используй предопределенные значения для каждого типа экрана из xml файла в res/values.

    Создай, например, файл dimens.xml в res/values подобного содержания

    <resources
        xmlns:android="http://schemas.android.com/apk/res/android">
        <dimen name="my_margin">250dp</dimen>
    </resources>


    И продублируй его для каждого типа экрана в папках values-large, values-sw600dp, values-xlarge и так далее, всякий раз изменяя значение my_margin на определенное для каждого типа экрана.

    Тогда в layout указывай все значения с помощью переменных. Например,

    android:layout_margin="@dimen/my_margin"

    Подробнее о поддержке разных типов экрана здесь: https://developer.android.com/guide/practices/scre...
    Ответ написан
  • Как сделать такую же кнопку в своем дизайне?

    a13xsus
    @a13xsus
    Lazy developer
    Это Floating Action Button. Да, вы можете обернуть свой xml в CoordinatorLayout и вместе с ним использовать кнопку. Делается достаточно легко с помощью support library. Достаточно понятно описано здесь:
    stackoverflow.com/questions/24459352/how-can-i-add...

    Подробнее:

    1. Подключаем support library к проекту. Я разрабатываю в xamarin, но в андроид студии к gradle нужно добавить что-то вроде: compile 'com.android.support:design:23.1.1'

    2. Оборачиваем весь ваш xml таким образом:

    <?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"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#cccccc"
        android:id="@+id/rel_layout">
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:scaleType="centerCrop"
    
            android:id="@+id/tv_movie_item_img360"
            android:transitionName="selectedMovie"/>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:background="#000000"
            android:alpha="0.3" />
    
        <com.makeramen.roundedimageview.RoundedImageView
            android:layout_width="100dp"
            android:layout_height="130dp"
    
            android:scaleType="centerCrop"
            app:riv_border_width="2dip"
            app:riv_border_color="#ffffff"
            android:layout_marginStart="14dp"
            android:id="@+id/tv_movie_item_img"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="240dp" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="The Revenant"
            android:id="@+id/tv_movie_item_nameRU"
            android:singleLine="true"
            android:layout_marginLeft="10dp"
            android:textSize="20sp"
            android:textColor="#ffffff"
            android:layout_alignBottom="@+id/tv_movie_item_img360"
            android:layout_toEndOf="@+id/tv_movie_item_img"
            android:layout_marginBottom="10dp" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="&quot;While exploring the uncharted wilderness in 1823, frontiersman Hugh Glass (Leonardo DiCaprio) sustains life-threatening injuries from a brutal bear attack."
            android:id="@+id/tv_movie_item_details"
            android:layout_marginLeft="10dp"
            android:paddingRight="10dp"
            android:textSize="12sp"
            android:layout_marginTop="5dp"
            android:layout_below="@+id/tv_movie_item_img360"
            android:layout_toEndOf="@+id/tv_movie_item_img" />
    
        <ExpandableListView
            android:id="@+id/exListView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_below="@+id/tv_movie_item_details"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">
        </ExpandableListView>
    
    </RelativeLayout>
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            android:clickable="true"
            android:src="@drawable/ic_forum"
            app:layout_anchor="@id/tv_movie_item_img360"
            app:layout_anchorGravity="bottom|right|end" />
    </android.support.design.widget.CoordinatorLayout>


    app:layout_anchor="@id/tv_movie_item_img360" -- здесь указываем view, к которому нужно пристыковаться кнопке (снизу)

    С вашим layout у меня получилось как-то так. Разумеется это без кода, в коде нужно будет добавить слушателя, чтобы обрабатывать клики:

    FloatingActionButton myFab = (FloatingActionButton) myView.findViewById(R.id.fab); 
    myFab.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
            doMyThing(); 
        } 
    });
    Ответ написан
  • Как сделать тень у navigationView на android до 5 версии?

    a13xsus
    @a13xsus
    Lazy developer
    Полагаю, вы через support library v4 делаете navigationview? Тогда

    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);


    Сам 9-patch png можно взять отсюда: https://developer.android.com/shareables/training/... (в папках drawable).
    Ответ написан
  • Как убрать серый background image в Android?

    a13xsus
    @a13xsus
    Lazy developer
    На днях с такой проблемой в Xamarin Studio столкнулся. Решение такое. Поместите ваше изображение в папку drawable-nodpi и обновите ресурсы. Ссылка android:background при этом таковой и должна остаться: @drawable/main_background.

    Связано с тем, что под разные экраны (с разной плотностью пикселей) андроид пытается масштабировать и не всегда получается. Если посмотреть в Application Output во время выполнения приложения, то там будут ошибки типа "Bitmap too large to be uploaded into a texture".
    Ответ написан