ViewBinding - How to set visibility for include layout in ViewBinding? - android-layout

I use an include layout and I need to change it's visibility:
<include
android:id="#+id/layout_provinces"
layout="#layout/layout_select_provinces"
/>
and layout_select_provinces is sth like this:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/select_province"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#color/white"
android:visibility="gone">
<LinearLayout
android:id="#+id/layout_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#color/background_color"
android:orientation="vertical">
<TextView
android:id="#+id/txt_state"
style="#style/FontIranBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="#dimen/_8sdp"
android:layout_marginRight="#dimen/_4sdp"
android:layout_marginBottom="#dimen/_8sdp"
android:text="#string/txt_select_province"
android:textSize="#dimen/font_size_small" />
<View
android:layout_width="match_parent"
android:layout_height="#dimen/_1sdp"
android:background="#color/gray_special" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="#+id/recycler_estate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/layout_top"
android:layout_marginTop="#dimen/_8sdp" />
but when I set Id to RelativeLayout, my app crashes and I can't change the visibility:
binding.layoutProvinces.selectProvince.setVisibility(View.GONE);
is there anyone can help me with ViewBinding set id process?

When we give <include> an id it overrides the id of root layout that we included. In your case, layout_provinces is overriding <RelativeLayout's select_province. So when you access the relative layout it gives you an error because it is no longer there.
What you can do is remove the id of relative layout and only give id to include and access the root layout that you included through the getRoot() method like below.
Java
binding.selectProvince.getRoot().setVisibility(View.GONE)
Kotlin
binding.selectProvince.root.visibility = View.GONE
the getRoot() method in View Binding returns the topmost view of the given layout in your case it's the RelativeLayout.

For DataBinding to work, you need to have <layout> tag as your root tag. So wrap your xml code inside <layout> like this:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:id="#+id/select_province"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#color/white"
android:visibility="gone">
<LinearLayout
android:id="#+id/layout_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#color/background_color"
android:orientation="vertical">
<TextView
android:id="#+id/txt_state"
style="#style/FontIranBold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="#dimen/_8sdp"
android:layout_marginRight="#dimen/_4sdp"
android:layout_marginBottom="#dimen/_8sdp"
android:text="#string/txt_select_province"
android:textSize="#dimen/font_size_small" />
<View
android:layout_width="match_parent"
android:layout_height="#dimen/_1sdp"
android:background="#color/gray_special" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="#+id/recycler_estate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/layout_top"
android:layout_marginTop="#dimen/_8sdp" />
</RelativeLayout>
</layout>

Related

How can make the mRecyclerView control fill in the free space?

I use Code A to design UI with constraint layout, the top of the UI is google AD and the bottom of the UI is toolbar.
I hope the RecyclerView control named mRecyclerView fill in all other space, how can I do?
BTW, Code B is generated by Android Studio 3.01 automatically when I drag and drop RecyclerView control to UI. It's a hard code for layout_width and layout_height.
Code A
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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">
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="#+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:layout_constraintTop_toTopOf="parent"
ads:adSize="SMART_BANNER"
ads:adUnitId="#string/ad_unit_id"
/>
<LinearLayout
android:id="#+id/linearLayoutToolBar"
style="#style/myToolbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="4"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<Button
android:id="#+id/btnBackup"
style="#style/myTextMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="#string/BtnBackup" />
<Button
android:id="#+id/btnExit"
style="#style/myTextMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="#string/BtnExit" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="#+id/mRecyclerView"
android:layout_width="368dp"
android:layout_height="396dp"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="58dp" />
</android.support.constraint.ConstraintLayout>
Code B
<android.support.v7.widget.RecyclerView
android:id="#+id/mRecyclerView"
android:layout_width="368dp"
android:layout_height="396dp"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="58dp" />
Replace your RecyclerView code like below to fill the free space:
<android.support.v7.widget.RecyclerView
android:id="#+id/mRecyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="#id/adView"
app:layout_constraintBottom_toTopOf="#id/linearLayoutToolBar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>

Android: How to understand layouts?

I am struggling big time with trying to make a simple layout with two TextView:s under each other on the left and corresponding two TimePicker:s under each other on the right. However, whichever view I use or attributes I choose that seem relevant I do not get the desired outcome. Here is my current try:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1"
>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
>
<TextView
android:layout_column="1"
android:id="#+id/text_start_time"
android:text="#string/start_time"
android:gravity="center_horizontal"
/>
<TimePicker
android:id="#+id/time_picker_start"
android:timePickerMode="spinner"
android:layout_marginTop="-25dp"
android:layout_marginBottom="-25dp"
android:layout_gravity="center"
/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
>
<TextView
android:layout_column="1"
android:id="#+id/text_end_time"
android:text="#string/end_time"
android:layout_gravity="center_horizontal"
/>
<TimePicker
android:id="#+id/time_picker_end"
android:timePickerMode="spinner"
android:layout_marginTop="-25dp"
android:layout_marginBottom="-25dp"
/>
</TableRow>
<TableRow>
<Button
android:layout_column="2"
android:layout_width="match_parent"
android:text="#string/button_calculate"
android:gravity="center"
android:onClick="calculateWorkingTime"
/>
</TableRow>
</TableLayout>
This gives the following output
Where is "Start"?
As you can see "Start" is not even shown! I would like to align "Start" with the vertical center of the TimePicker spinner. How to do that?
First, don't use a TableLayout. Use Linears, as you are a beginner and they're easier to use and understand. Here's what you should do:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="#+id/text_start_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/start_time"
android:gravity="center_horizontal"
/>
<TimePicker
android:id="#+id/time_picker_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner"
android:layout_marginTop="-25dp"
android:layout_marginBottom="-25dp"
android:layout_gravity="center"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="#+id/text_end_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/end_time"
android:gravity="center_horizontal"
/>
<TimePicker
android:id="#+id/time_picker_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner"
android:layout_marginTop="-25dp"
android:layout_marginBottom="-25dp"
android:layout_gravity="center"
/>
</LinearLayout>
<Button
android:layout_column="2"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="#string/button_calculate"
android:gravity="center"
android:onClick="calculateWorkingTime"
/>
</LinearLayout>
What I've done is creating a Linear Layout and, into it, another two with orientation:horizontal, which makes the elements appear one next to each other.
Also, I've put width and height to all the elements, what is very important.
I've put wrap_content, if you want to change it, no problem.
I didn't test it, if there's any error, just coment
Hope it helps!

How to align with view element present in the included layout in Android

I would like to align the view element in the current layout with the view element which I included through tag in Android.
Layout1: (Layout1.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="#+id/click_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="#string/desc"
android:padding="4dp"
android:src="#drawable/icon_click" />
<RelativeLayout
android:id="#+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="#+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:gravity="bottom"
android:paddingLeft="8dp"
android:paddingTop="6dp"
android:text="#string/textview1"
/>
<TextView
android:id="#+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView1"
android:text="#string/textView2"
/>
</RelativeLayout>
</LinearLayout>
Layout2:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include
android:id="#+id/includedLayout"
layout="#layout/Layout1" />
<View
android:id="#+id/seperator"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:alpha="0.3"
android:background="#FFFFFF" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<!-- I want to align this layout with relative layout present in the
Layout1.xml file which is included above -->
</LinearLayout>
</LinearLayout>
I want to align the second LinearLayout in the Layout2.xml with the RelativeLayout in the Layout1.xml file which is included in the Layout2.xml file.
Please let me know if anyone knows the solution.
Thanks.
whay dont you try putting the layout part that you want to align in to another file and only include that file in to the your layout2.xml and manually coding remining part in the layout2.xml.
What i mean is to take
`
<TextView
android:id="#+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:gravity="bottom"
android:paddingLeft="8dp"
android:paddingTop="6dp"
android:text="#string/textview1"
/>
<TextView
android:id="#+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView1"
android:text="#string/textView2"
/>
</RelativeLayout>`
this part in to another separate file and manually add imageview in to layout2.xml

How to prevent Soft Keyboard from resizing background image

I have a typical listview with an edittext and a button at the bottom of the activity.
When I click onto the edittext, the soft keyboard appears, I am able to scroll the items in the listview but it re-sizes my background image.
I have tried android:windowSoftInputMode="adjustResize" but no difference.
I have tried android:windowSoftInputMode="adjustPan". The image does not get squashed, the whole layout shifts upwards and I lose the title bar. I can only scroll the list if the list items exceed the layout size.
Basically, I want to maintain the title bar, retain the background image without re-sizing and allow scrolling of list items. Anyone managed to do this? Thanks!
for listview you need to use
android:isScrollContainer="false"
and add this to your activity in manifest.xml
android:windowSoftInputMode="adjustPan"
I have tried so may solutions for solving this problem. android:windowSoftInputMode="adjustPan" will make your whole screen shift with keyboard. Generally we have a title of the screen on the top. Using this flag it will also go out of the visible area, which make bad user experience. I use android:windowSoftInputMode="adjustResize" This will resize the whole screen but it will cause the same problem #Maurice state in the question.
So here is my final solution:
In Manifest
android:windowSoftInputMode="adjustResize|stateAlwaysHidden"
In XMl
Dont Set any background here.And keep your view under ScrollView
In Java
You need to set the background to window:
getWindow().setBackgroundDrawableResource(R.drawable.bg_wood) ;
Go to the Androidmanifest.xml and:
activity name="activityname" android:windowSoftInputMode="stateVisible|adjustPan"
There is no way to prevent the soft keyboard from resizing a background image.
Use this scaleType(matrix) and prepare a suitable image.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="#+id/RelativeLayoutchat"
>
<LinearLayout
android:orientation="horizontal"
android:gravity ="clip_horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true">
<ImageView
android:gravity ="clip_horizontal"
android:id="#+id/chat_bak_img"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="matrix">
</ImageView>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="#+id/chat"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:transcriptMode="alwaysScroll"
android:divider="#000000"
android:clickable="false"
android:layout_weight="9"
android:cacheColorHint="#00000000"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1"
style="#android:style/ButtonBar"
android:gravity="center"
android:paddingLeft="3dip"
android:paddingTop="3dip"
android:paddingRight="3dip">
<EditText
android:id="#+id/chatMsg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxLines="5"
android:enabled="true"
android:textSize="17sp"
android:maxLength="150"/>
<Button
android:id="#+id/sendMsg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="#string/send_withSpace"
android:layout_weight="4"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Use android:windowSoftInputMode="adjustResize" and simply wrap your background ImageView in a ScrollView.
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
android:overScrollMode="never">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</ScrollView>
I have the same problem with imageview resize while keyboard up i have solved with manifest android:windowSoftInputMode="adjustPan" and following is the layout example in my case
i.e frg_write_social:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/frg_writeyourpost_ll_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:fitsSystemWindows="true"
android:isScrollContainer="false"
android:scrollbars="none" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:id="#+id/frg_writeyourpost_rl_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="#+id/frg_writeyourpost_ll_bottum"
android:layout_alignParentTop="true"
android:minHeight="400dip" >
<ImageView
android:id="#+id/frg_writyourpost_iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:adjustViewBounds="true"
android:scaleType="fitXY" />
</RelativeLayout>
<LinearLayout
android:id="#+id/frg_writeyourpost_ll_bottum"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical"
android:padding="10dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:background="#android:color/white"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:text="Write your post"
android:textColor="#727F8D"
android:textSize="10sp" />
<com.example.views.CustomEditText
android:id="#+id/frg_writeyourpost_et_message"
android:layout_width="match_parent"
android:layout_height="#dimen/slide_image"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#null"
android:inputType="textMultiLine"
android:maxHeight="#dimen/slide_image"
android:maxLines="3"
android:textSize="11sp" >
</com.example.views.CustomEditText>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="horizontal" >
<TextView
android:id="#+id/frg_writeyourpost_tv_totalcharacter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="0"
android:textColor="#727F8D"
android:textSize="8sp" />
<TextView
android:id="#+id/frg_writeyourpost_tv_characterLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:gravity="center"
android:text="character"
android:textColor="#727F8D"
android:textSize="8sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal" >
<RadioGroup
android:id="#+id/frg_writepost_fbtw_rggroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="#+id/frg_writepost_rb_facebook"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#drawable/fb_check_selector"
android:button="#android:color/transparent"
android:gravity="center"
android:padding="10dip"
android:text="#string/post_for_facebook"/>
<View
android:layout_width="5dip"
android:layout_height="match_parent"
android:background="#android:color/transparent"/>
<RadioButton
android:id="#+id/frg_writepost_rb_twitter"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#drawable/tw_check_selector"
android:button="#android:color/transparent"
android:gravity="center"
android:padding="10dip"
android:text="#string/post_for_twitter"/>
</RadioGroup>
</LinearLayout>
</LinearLayout>
</LinearLayout>
if there is possible to load image dynamically you can resize image with picaaso while load in imageview
Use ImageView with fill_parent and centerCrop attributes in RelativeLayout. Like this;
<RelativeLayout 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"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="#drawable/yazisma_arka_plan"
android:scaleType="centerCrop"
/>
<ListView
android:id="#+id/messages_view"
android:layout_width="fill_parent"...
I read a lot of answers over StackOverflow and took some from many to make my app works:
No ScrollView at all in my activity_main.xml
In AndroidManifest.xml added this attribute to the
<activity android:name=".MainActivity" ...>
tag:
android:windowSoftInputMode="adjustResize"
In MainActivity.java inside onCreate()
I added getWindow().setBackgroundDrawableResource(R.drawable.app_bg);
It works for me when all the other solutions I've tried didn't.
If you got up to here, I hope it'll work for you too.
Er, let me see ... pictures first!
The layout file act_login.xml.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#drawable/login_bkgd"
android:orientation="vertical"
android:paddingLeft="25dp"
android:paddingRight="25dp"
>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:cacheColorHint="#0fff"
android:scrollbars="none"
android:listSelector="#0fff"
android:divider="#0fff"
android:dividerHeight="0dp"
android:isScrollContainer="true"
/>
<!--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
<!--android:isScrollContainer="true"-->
<!--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-->
<LinearLayout
android:id="#+id/loginItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
>
<ImageView
android:id="#+id/loginLogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="35dp"
android:layout_marginTop="35dp"
android:scaleType="fitCenter"
android:src="#drawable/logo"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingBottom="35dp"
>
<View
android:layout_width="0dp"
android:layout_height="1px"
android:layout_weight="1"
android:background="#Ffff"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:text="WELCOME"
android:textColor="#Ffff"
android:textSize="14sp"
/>
<View
android:layout_width="0dp"
android:layout_height="1px"
android:layout_weight="1"
android:background="#Ffff"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#drawable/login_et_long"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<TextView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:background="#null"
android:text="账号:"
android:textColor="#Ffff"
android:textSize="16sp"
/>
<EditText
android:id="#+id/loginUsername"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#null"
android:hint="请输入手机号"
android:imeOptions="actionNext"
android:inputType="text"
android:singleLine="true"
android:textColor="#F000"
android:textSize="16sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="45dp"
android:layout_marginTop="10dp"
android:background="#drawable/login_et_long"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<TextView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:background="#null"
android:text="密码:"
android:textColor="#Ffff"
android:textSize="16sp"
/>
<EditText
android:id="#+id/loginPassword"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#null"
android:hint="请输入密码"
android:imeOptions="actionGo"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="#F000"
android:textSize="16sp"
/>
</LinearLayout>
<TextView
android:id="#+id/login"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#drawable/login_button"
android:gravity="center"
android:padding="10dp"
android:text="#string/str_login"
android:textColor="#Ffff"
android:textSize="19sp"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
The related Java codes.
EditText etUsername, etPassword;
EditText etFocus;
ViewGroup base;
int mSelection;
#Override
protected void onCreate(Bundle savedInstanceState) {
base=(ViewGroup)getLayoutInflater().inflate(R.layout.act_login, null);
setContentView(base);
getWindow().setBackgroundDrawable(base.getBackground());
base.setBackground(null);
super.onCreate(savedInstanceState);
}
#Override
protected void initViews() {
etUsername=(EditText)findViewById(R.id.loginUsername);
etPassword=(EditText)findViewById(R.id.loginPassword);
final ViewGroup item=(ViewGroup)findViewById(R.id.loginItem);
base.removeView(item);
final View[] items=new View[item.getChildCount()];
for(int i=0; i<item.getChildCount(); i++) items[i]=item.getChildAt(i);
item.removeAllViews();
ListView lv=(ListView)base.getChildAt(0);
lv.setAdapter(new BaseAdapter() {
public View getView(int i, View v, ViewGroup vg) {
if(etFocus!=null && getCurrentFocus()!=etFocus){
etFocus.requestFocus();
etFocus.setSelection(mSelection);
//etFocus=null;
}
return items[i];
}
public int getCount() {return items.length;}
public Object getItem(int position) {return null;}
public long getItemId(int position) {return 0;}
});
/*View.OnTouchListener listener=new View.OnTouchListener() {
#Override
public boolean onTouch(View v, MotionEvent e) {
if(e.getAction()!=MotionEvent.ACTION_UP) return false;
etFocus=(EditText)v;
mSelection=etFocus.getSelectionEnd();
ZZ.z("_________________ mSelection="+mSelection);
return false;
}
};
etUsername.setOnTouchListener(listener);
etPassword.setOnTouchListener(listener);*/
View.OnFocusChangeListener listener1=new View.OnFocusChangeListener() {
#Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
etFocus=(EditText)v;
mSelection=etFocus.getSelectionStart();
ZZ.z("_________________ mSelection="+mSelection);
}
}
};
etUsername.setOnFocusChangeListener(listener1);
etPassword.setOnFocusChangeListener(listener1);
}
The AndroidManifest part.
<activity
android:name=".ui.activity.ActLogin"
android:label="#string/str_login"
android:theme="#style/myTheme"
/>
<!--android:windowSoftInputMode="adjustResize"-->
The style part.
<style name="myTheme" parent="#android:style/Theme.Light.NoTitleBar">
<item name="android:windowTranslucentStatus">true</item>
</style>
This code doesn't work for me:
android:windowSoftInputMode="adjustResize"
But this does work:
android:windowSoftInputMode="adjustPan"
For those who aren't get it:
double ckeck if your xml already has a #drawable setted (this was the error for me, i was setting via android manifest but it was already setted on the root of xml)
after that create a theme style with background:
<style name="AppThemeWBackgroundG" parent="AppTheme">
<item name="android:windowBackground">#drawable/background_com_gradiente</item>
</style>
Then in your activity on AndroidManifest.xml:
<activity
android:name=".TelaLoginFuncionario"
android:windowSoftInputMode="adjustResize|stateAlwaysVisible"
android:theme="#style/AppThemeWBackgroundG"
android:fitsSystemWindows="true"
/>
and that's it: the activity enter in a screen with the keyboard up, resizing up the items and the background stays at normal size
all you need to do is to set the background gravity to the top
<item android:drawable="#drawable/background_image" android:gravity="top"/>
Here is tutorial

Visual separator in RelativeView

Is there a way to create a visual divider in a relative layout similar to the way you can using a list divider?
This is what I have currently.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_height="wrap_content"
android:text="Screen Ratio:"
android:id="#+id/ScreenRatio"
android:layout_width="100dip"
android:layout_alignTop="#+id/ratio_spinner"
android:layout_alignBottom="#+id/ratio_spinner"
android:gravity="center_vertical"/>
<Spinner android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="#+id/ScreenRatio"
android:id="#+id/ratio_spinner"/>
<TextView
android:layout_height="wrap_content"
android:text="Units:"
android:id="#+id/Units"
android:layout_width="wrap_content"
android:layout_toLeftOf="#+id/unit_spinner"
android:layout_alignTop="#+id/unit_spinner"
android:layout_alignBottom="#+id/unit_spinner"
android:gravity="center_vertical"
android:layout_alignParentLeft="true"/>
<Spinner android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="#+id/ScreenRatio"
android:layout_below="#+id/ratio_spinner"
android:id="#+id/unit_spinner"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Clear"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:gravity="fill"
android:paddingLeft="50dip"
android:paddingRight="50dip"/>
</RelativeLayout>
So far , i have tried to add separator inside the TableLayout using the below code:
<View android:id="#+id/view_separator"
android:background="#FFFFFF"
android:layout_centerVertical ="true"
android:layout_width = "fill_parent"
android:layout_height="2dip"
android:layout_alignParentTop="true"/>
It may helps you, just try it.

Resources